Gentoo Logo

Avertisment : Acest document nu este valid şi nu mai este întreţinut.

Manual Gentoo Linux pentru arhitectura MIPS

Conţinut:

  • Instalarea Gentoo
    În această parte învăţaţi cum să instalaţi Gentoo pe sistemul dvs.
    1. Despre Instalarea Gentoo Linux
      Acest capitol vă introduce în tipul de instalare documentat în această parte.
    2. Alegerea Mediului de Instalare Corect
      Puteţi instala Gentoo în multe moduri. Acest capitol vă explică cum să instalaţi Gentoo utilizând imaginile de boot MIPS Netboot.
    3. Configurarea Reţelei
      Dacă doriţi să instalaţi Gentoo utilizând o conexiune la Internet, trebuie să setaţi opţiunile de reţea.
    4. Pregătirea Discurilor
      Pentru a putea instala Gentoo, trebuie să creaţi partiţiile necesare. Acest capitol descrie cum să partiţionaţi un disc pentru utilizări ulterioare.
    5. Instalarea Fişierelor Gentoo necesare Instalării
      Instalările Gentoo funcţionează prin intermediul unei arhive tar stage3. În acest capitol vom descrie modul de a dezarhiva arhiva tar stage3 şi de a configura Portage.
    6. Instalarea Sistemului de Bază al Gentoo
      După instalarea şi configurarea în stagiul 3, rezultatul eventual este că veţi avea un sistem de bază Gentoo, la dispoziţia dvs. Acest capitol explică cum să progresaţi până la acel stadiu.
    7. Configurarea Kernel-ului
      Kernel-ul Linux este nucleul fiecărei distribuţii. Acest capitol explică cum dă vă configuraţi kernel-ul.
    8. Configurarea Sistemului
      Trebuie să editaţi unele fişiere de configurare importante. În acest capitol vi se va oferi o perspectivă a acestor fişiere şi cum să procedaţi.
    9. Instalarea Utilitarelor de Sistem Necesare
      Aşa cum am menţionat anterior, Gentoo reprezintă posibilitatea alegerii. În acest capitol vă ajutăm să instalaţi unele utilitare importante.
    10. Configurarea Aplicaţiei Bootloader
      Atât pe maşinile Silicon Graphics cât şi pe maşinile server Cobalt este necesară utilizarea unei aplicaţii bootloader pentru a încărca imaginea de kernel. Această secţiune explică setarea aplicaţiilor arcboot/arcload (pentru maşinile SGI) şi colo pentru maşinile server Cobalt.
    11. Finalizarea Instalării Gentoo
      Sunteţi aproape gata. Vom crea unul (sau mai mulţi) utilizatori pentru sistemul dvs.
    12. Cum să continuăm?
      Acum aveţi sistemul dvs. Gentoo, dar ce faceţi mai departe?
  • Lucrul cu Gentoo
    Învăţaţi cum să lucraţi cu Gentoo: instalarea de aplicaţii software, modificarea variabilelor, modificarea comportamentului portage, etc.
    1. Introducere în Portage
      Acest capitol explică paşii "simpli" pe care utilizatorul trebuie neapărat să-i cunoască pentru a efectua mentenanţa aplicaţiilor din sistem.
    2. Indicatori USE
      Indicatorii USE sunt un aspect foarte important în Gentoo. În acest capitol, învăţaţi cum să manipulaţi indicatorii USE şi să înţelegeţi cum aceştia interacţionează cu sistemul dvs.
    3. Particularităţile Portage
      Descoperiţi particularităţile deţinute de Portage, cum ar fi suportul pentru compilarea distribuită, ccache şi altele.
    4. Script-urile de Iniţializare
      Gentoo utilizează un tipar de script de iniţializare care, dintre toate caracteristicile, permite decizii în funcţie de dependenţe şi script-uri de iniţializare virtuale. Acest capitol explică toate aceste aspecte şi explică cum să manipulaţi aceste script-uri.
    5. Variabile de Mediu
      Cu Gentoo puteţi foarte uşor să administraţi variabilele de mediu din sistemul dvs. Acest capitol explică modul în care puteţi realiza acest lucru, şi, de asemenea, descrie cele mai utilizate dintre aceste variabile.
  • Utilizarea Portage
    "Utilizarea Portage" oferă o descriere în detaliu a sistemului Portage, Utilitarul de Administrare a Pachetelor din Gentoo.
    1. Fişiere şi Directoare
      Dacă doriţi să cunoaşteţi caracteristicile Portage în detaliu, trebuie să ştiţi unde îşi stochează fişierele şi datele.
    2. Configurarea prin intermediul Variabilelor
      Portage este complet configurabil prin diversele variabile ce le puteţi seta în fişierul de configurare sau ca variabilă de mediu.
    3. Interclasarea Categoriilor Software
      Gentoo oferă aplicaţiile software separate în mai multe categorii, depinzând de stabilitatea şi suportul pentru fiecare arhitectură. "Interclasarea Categoriilor Software" vă informează despre modalităţile de configurare al acestor categorii şi cum puteţi suprascrie individual această separare.
    4. Utilitare Adiţionale pentru Portage
      Portage oferă o serie adiţională de utilitare ce vă pot transforma experienţa Gentoo într-una mai bună. Citiţi pentru a descoperi cum să utilizaţi dispatch-conf şi alte utilitare.
    5. Derivarea din Structura Oficială
      "Derivarea din Structura Oficială" vă oferă mai multe sfaturi şi trucuri despre cum să utilizaţi propria structura Portage, cum să sincronizaţi doar categoriile dorite, să injectaţi pachete, şi altele.
    6. Aplicaţia Ebuild
      În "Aplicaţia Ebuild" sunteţi informaţi despre paşii pe care Portage îi parcurge în timpul instalării pachetelor software şi cum puteţi face acest lucru utilizând aplicaţia ebuild.
  • Configurarea Reţelei în Gentoo
    Un ghid comprehensiv despre Reţelistică în Gentoo.
    1. Primii Paşi
      Un ghid pentru a vă activa rapid interfeţele în cele mai multe dintre medii.
    2. Configurarea Avansată
      Aici învăţăm cum funcţionează configuraţia - trebuie să cunoaşteţi acest lucru înainte de a învăţa despre reţelistica modulară.
    3. Reţelistica Modulară
      Gentoo vă oferă o reţelistică flexibil - aici vi se expun alegerea diferiţilor clienţi DHCP, setarea sistemului de bond, a celui de bridge, sistemelor VLAN şi altele.
    4. Reţelistică Wireless
      Wireless nu este simplu de configurat. Să sperăm că o vom face să funcţioneze pentru dvs.!
    5. Adăugarea Funcţionalităţii
      Dacă vă simţiţi aventuros, vă puteţi adăuga propriile funcţii pentru reţea.
    6. Administrarea Reţelei
      Pentru utilizatorii sistemelor laptop sau pentru cei care îşi transportă sistemul prin diferite reţele.

A. Instalarea Gentoo

1. Despre Instalarea Gentoo Linux

1.a. Introducere

Bine aţi venit

În primul rând vă urăm, Bun venit în lumea minunată Gentoo. Sunteţi pe cale de a descoperi lumea flexibilităţii şi performanţei. Gentoo în primul rând înseamnă flexibilitatea alegerii. Odată ce veţi hotărî să instalaţi Gentoo Linux, procedeul de instalare vă permite o foarte mare flexibilitate în alegerea modalităţii de instalare, care poate fi compilarea întregului sistem de la început sau doar instalând binarele, aveţi posibilitatea de a alege componentele de sistem cum sunt bootloader-ul, logger-ele etc.

Gentoo este o metadistribuţie modernă şi foarte rapidă, ce are o structură flexibilă. Gentoo este construit în jurul conceptului free software şi pune la dispoziţia utilizatorilor toate resursele. Portage, sistemul de administrare al pachetelor utilizat de Gentoo, este scris în limbajul de programare Python, utilizatorii având acces la codul sursă şi putând modifica sursele în funcţie de necesităţile proprii. Sistemul de pachete Gentoo utilizează codul sursă al programelor (deşi oferă şi suport pentru binare precompilate), iar configurarea Gentoo se efectuează prin editarea directă a fişierelor de configurare ce sunt fişiere de tip text normale. Cu alte cuvinte este un sistem deschis.

Este foarte important să înţelegeţi faptul că alegerile sunt estenţiale în rularea Gentoo. Noi nu vă forţăm în nimic din ceea ce displaceţi. În cazul în care credeţi acest lucru, va rugăm să ne scrieţi un bugreport.

Cum este structurat procesul de instalare?

Instalarea Gentoo poate fi descrisă în 10 paşi, corespunzând capitolelor 2 - 11. Fiecare pas are ca rezultat un anumit stadiu:

  • După pasul 1, vă aflaţi în mediul de lucru şi sunteţi pregătit pentru instalarea Gentoo
  • După pasul 2, conexiunea la internet este pregătită pentru instalarea Gentoo
  • După pasul 3, hard disk-ul este pregătit pentru a găzdui Gentoo
  • După pasul 4, mediul de instalare este pregătit şi puteţi utiliza chroot pentru integrarea în noul mediu
  • După pasul 5, pachetele de bază, ce sunt la fel pentru toate sistemele Gentoo, vor fi instalate
  • După pasul 6, Kernel-ul Linux va fi compilat
  • După pasul 7, vor fi completate majoritatea fişierelor de configurare Gentoo
  • După pasul 8, utilitarele de sistem necesare(pe care le puteţi alege dintr-o listă completă) sunt instalate
  • După pasul 9, aplicaţia bootloader aleasă a fost instalată şi configurată şi sunteţi log-aţi în noua instalare Gentoo
  • După pasul 10, noul dvs. mediu Gentoo, va fi gata de explorat

Gentoo Linux vă permite o foarte mare flexibilitate în alegere, pe care vom încerca să le explicam atât din punct de vedere al punctelor forte cât şi al punctelor slabe. Vom continua cu un set de opţiuni implicite, identificate cu "Implicite: " în titlu. Celelalte opţiuni sunt marcate cu "Alternativ: ". Să nu consideraţi că opţiunile implicite sunt cele recomandate. În orice caz, sunt ceea ce credem că cei mai mulţi dintre utilizatori vor folosi.

În anumite cazuri puteţi opta pentru soluţii marcate ca "Opţional: ", care nu sunt obligatorii în timpul instalării Gentoo. Aveţi grijă la anumite opţiuni care pot depinde de alte opţiuni ce au fost alese sau ce vor depinde de anumiţi paşi ce vor fi executaţi în prealabil sau după alegerea opţiunii şi pe care îi vom menţiona în documentaţia de faţă.

Care sunt opţiunile?

Gentoo Poate fi instalat în diferite moduri. Aveţi posibilitatea de a descărca şi instala Gentoo Linux de pe unul din mediile Installation CD disponibile, sau de pe un alt CD boot-abil (cum este Knoppix), sau boot-ând din reţea, de pe o dischetă rescue, etc.

Acest document acoperă modalitatea de instalare utilizând un mediu Installation CD Gentoo sau, în unele cazuri, boot-area din reţea. Această modalitate de instalare presupune că doriţi să instalaţi ultima versiune a fiecărui pachet. Dacă doriţi să efectuaţi o instalare fără reţea, va trebui să consultaţi Manualele Gentoo 2006.0 ce conţin instrucţiunile de instalare pentru un mediu fără reţea.

De asemenea, notaţi faptul că dacă doriţi să utilizaţi GRP (Gentoo Reference Platform, o colecţie de pachete precompilate destinate utilizării imediate după o instalare Gentoo), trebuie să urmaţi instrucţiunile din Manualele Gentoo 2006.0.

Pentru instrucţiuni despre alte metode de instalare, vă rugăm să consultaţi Ghidul de Instalare Alternativă. De asemenea, vă oferim un document cu Sfaturi şi Trucuri pentru Instalarea Gentoo care vă poate fi de folos, de asemenea. În cazul în care consideraţi că instrucţiunile de instalare curente sunt prea elaborate, puteţi utiliza Ghidul de Instalare Rapid, disponibil pe pagina noastră de Resurse de Documentaţie, dacă arhitectura dvs. dispune de un asemenea document.

De asemenea aveţi mai multe posibilităţi: puteţi compila întregul sistem de la bază sau a utiliza un mediu precompilat care permite o instalare foarte rapidă. Şi desigur puteţi utiliza metoda de instalare intermediară unde nu este necesară compilarea întregului sistem ci doar a unei părţi din sistemul de bază care vine semi-precompilat.

Probleme?

Dacă aţi găsit o eroare sau neconcordanţă în procesul de instalare (sau documentaţia de instalare) vă rugăm să vizitaţi sistemul de urmărire al bug-urilor şi verificaţi dacă eroarea descoperită de către dumneavoastră este cunoscută. Dacă nu a fost semnalată creaţi un bugraport pentru a permite corectarea erorilor într-un timp cat mai scurt. Nu vă temeţi de dezvolatorii cărora le atribuiţi bug-urile (semnalate de dvs) -- în general ei nu mănâncă oameni.

Notaţi că, deşi documentul pe care îl citiţi acum este specific arhitecturii, va conţine referinţe către alte arhitecturi, de asemenea. Aceasta se întâmplă deoarece multe părţi ale Manualului Gentoo utilizează cod sursă ce este comun pentru toate arhitecturile (pentru a evita multiplicarea eforturilor şi irosirea resurselor de dezvoltare). Vom încerca să minimizăm aceste informaţii pentru a evita confuzia.

Dacă pe parcursul procesului de instalare întâmpinaţi greutăţi şi nu sunteţi sigur de natura problemei care poate fi problemă-utilizator sau problemă-software şi răspunsul nu-l puteţi găsi în documentaţia de faţă sunteţi invitaţi să va alătura la canalul de discuţii oficial gentoo join #gentoo de pe irc.freenode.net unde cu siguranţa veţi putea găsi răspuns la problemele şi întrebările ce vă interesează. Bineînţeles, sunteţi binevenit şi în alte situaţii :)

Dacă aveţi întrebări referitoare la Gentoo, vizitaţi Întrebări frecvente despre Gentoo Linux, pe care le puteţi găsi la Documentaţii Gentoo. De asemenea puteţi consulta FAQs de pe forumuri. Dacă nu găsiţi răspuns la întrebările ce vă preocupa încercaţi pe canalul IRC oficial #gentoo, de pe irc.freenode.net. Da, unii dintre noi suntem nebuni care suntem prezenţi pe IRC :-)

2. Alegerea Mediului de Instalare Corect

2.a. Necesităţi Hardware

Introducere

Înainte de a începe, avem nevoie să cunoaştem componentele hardware ce sunt suportate de Gentoo Linux pentru o instalare reuşită.

Necesităţi Hardware

Procesor (Big Endian port) MIPS3, MIPS4, MIPS5 sau procesor clasa MIPS64
Procesor (Little Endian port) MIPS4, MIPS5 sau procesor clasa MIPS64
Memorie 64 MOcteţi
Spaţiu pe disc 1.5 GOcteţi (excluzând spaţiul swap)
Spaţiu swap Cel puţin 256 MOcteţi

Va trebui, de asemenea, să consultaţi documentul despre Necesităţi Hardware MIPS disponibil pe site-ul nostru.

2.b. Note pentru Instalare

O Notă Despre Arhitecturile cu Procesoare

Pe multe dintre arhitecturi, procesorul a evoluat de-a lungul mai multor generaţii, fiecare generaţie nouă având-o ca bază pe cea anterioară. MIPS nu face excepţie de la această regulă. Există mai multe generaţii de procesoare conţinute în arhitectura MIPS. Pentru a vă alege arhiva tar stage conţinând imaginea pentru boot din reţea şi opţiunile CFLAGS corespunzător, trebuie să cunoaşteţi cărei familii îi aparţine procesorul sistemului dvs. Aceste familii sunt menţionate ca Arhitectura Setului de Instrucţiuni (Instruction Set Architecture).

MIPS ISA 32/64 biţi Procesoare Conţinute
MIPS 1 32 biţi R2000, R3000
MIPS 2 32 biţi R6000
MIPS 3 64 biţi R4000, R4400, R4600, R4700
MIPS 4 64 biţi R5000, RM5000, RM7000 R8000, R9000, R10000, R12000, R14000, R16000
MIPS 5 64 biţi Nici unul, deocamdată
MIPS32 32 biţi Seriile AMD Alchemy, 4kc, 4km, multe altele...
MIPS64 64 biţi Broadcom SiByte SB1, 5kc ... etc...

Notă: Nivelul ISA MIPS5 a fost proiectat de Silicon Graphics în 1994, dar nu a fost niciodată utilizat într-un procesor real. Acesta este utilizat ca o componentă ISA a MIPS64.

Notă: Componentele ISA a MIPS32 şi MIPS64 sunt o sursă comună de confuzie. Nivelul ISA MIPS64 este, de fapt, un superset al componentei ISA din MIPS5, deci include toate instrucţiunile din componentele ISA iniţiale din MIPS5. MIPS32 este un subset pe 32 de biţi al MIPS64, acesta existând deoarece majoritatea aplicaţiilor necesită doar procesarea pe 32 de biţi.

De asemenea, un alt concept de menţionat este conceptul de endianness. Conceptul endianness se referă la modul cum procesorul citeşte cuvintele din memoria principală. Un cuvânt poate fi citit, fie în modul big endian (cel mai semnificativ bit este primul) sau little endian (cel mai puţin semnificativ bit este primul). Maşinile Intel x86 au la bază Little endian, în timp ce maşinile Apple şi Sparc au la bază Big Endian. Pe MIPS pot fi în oricare din aceste moduri. Pentru a le separa, adăugăm el arhitecturii pentru a denota modul little endian.

Arhitectură 32/64 biţi Endianness Maşini conţinute
mips 32 biţi Big Endian Silicon Graphics
mipsel 32 biţi Little Endian DECStations, Cobalt Servers, PlayStation 2
mips64 64 biţi Big Endian Silicon Graphics
mips64el 64 biţi Little Endian Cobalt Servers, PlayStation 2

Pentru cei ce doresc să se documenteze în plus despre ISA-uri, următoarele site-uri le pot fi de folos:

Arhiva Tar Stage3

Un fişier tar stage3 este o arhivă ce conţine un mediul minimal Gentoo, potrivit pentru a continua instalarea Gentoo utilizând instrucţiunile din acest manual. Anterior, Manual Gentoo descria instalarea utilizând una din cele 3 arhive tar stage. În timp ce Gentoo încă mai oferă arhivele tar stage1 şi stage2, modalitatea de instalare oficială utilizează o arhivă tar stage3. Dacă sunteţi interesat să utilizaţi un fişier tar stage1 sau stage2, vă rugăm să consultaţi documentul cu Întrebări Frecvente în Gentoo, secţiunea Cum Instalez Gentoo Utilizând O Arhivă Tar Stage1 sau Stage2?

2.c. Detalii Generale Despre Boot-area din Reţea

În această secţiune vom documenta necesităţile dvs. pentru a efectua cu succes procesul de boot din reţea a staţiilor de lucru Silicon Graphics şi a dispozitivelor appliance Cobalt Server. Acesta este doar un ghid pe scurt şi nu este intenţionat pentru a aprofunda, pentru mai multe informaţii eu vă recomand consultarea Ghidului Gentoo pentru sistemele fără disc.

De ce aveţi nevoie: În funcţie de maşină există un anumit număr de componente hardware de care veţi avea nevoie pentru a putea efectua procesul de boot din reţea cu succes şi a instala Linux.

  • În General:
    • Server DHCP/BOOTP (este recomandat ISC DHCPd)
    • Răbdare -- chiar multă
  • Pentru staţiile de lucru Silicon Graphics:
    • Server TFTP (recomandat este tftp-hpa)
    • Dacă doriţi/trebuie să utilizaţi consola serială:
      • MiniDIN8 --> cablu serial RS-232
      • cablu Null-modem
      • Terminal compatibil VT100 sau ANSI capabil să reacţioneze la o viteză de transmisie de 9600 baud
  • Pentru maşinile server Cobalt (NU cele originale Qube):
    • Server NFS
    • Cablu Null-modem
    • Terminal compatibil VT100 sau ANSI capabil să reacţioneze la o viteză de transmisie de 115200 baud

Notă: Maşinile SGI utilizează un conector MiniDIN 8 pentru porturile seriale. După câte se pare, cablurile de modem Apple funcţionează corect în rolul de cabluri seriale, dar, cum maşinile Apple sunt echipate cu porturi USB şi dispozitive modem interne, acestea sunt din ce în ce mai greu de găsit. O diagramă de conexiuni este disponibilă de pe situl Linux/MIPS Wiki, şi majoritatea magazinelor de electronică ar trebui să aibă prizele necesare.

Notă: Ca terminat, acesta poate fi un terminal real VT100/ANSI, sau poate fi un PC ce rulează o aplicaţie ce simulează un terminal (cum ar fi HyperTerminal, Minicom, seyon, Telex, xc, screen -- pe care îl preferaţi). Nu contează pe ce platformă rulează această maşină -- atât timp cât deţine un port serial RS-232 pe care să îl puteţi utiliza, precum şi aplicaţia corespunzătoare.

Notă: Notaţi faptul că acest ghid nu acoperă dispozitivele originale Qube. Dispozitivele appliance server originale nu au un port serial în configuraţia implicită, deci nu este posibilă instalarea Gentoo pe acestea fără ajutorul unui driver special şi a unei maşini surogat pentru a efectua instalarea. Următorul site conţine un ghid despre instalarea Gentoo pe aceste maşini. http://www.metzner.org/projects/qube/

Setarea TFTP şi DHCP -- un ghid concis

Bun, deci aveţi totul definitivat, acum este timpul să setăm restul. Aşa cum am menţionat mai devreme, acesta nu este un ghid complet, ci este configuraţia minimă necesară pentru a putea pune lucrurile în mişcare. Îl puteţi utiliza, fie când porniţi de la zero, sau să utilizaţi sugestiile pentru a vă modifica setările existente în scopul suportării procesului de boot din reţea.

Nu este important faptul că server-ele utilizat nu trebuie să utilizeze Gentoo Linux, puteţi, într-un mod rezonabil, să rulaţi FreeBSD sau orice altă platformă Unix-like. În orice caz, în acest ghid se va presupune că rulaţi Gentoo Linux. De asemenea, puteţi rula TFTP/NFS pe o maşină separată de server-ul DHCP, dacă doriţi.

Atenţie: Echipa Gentoo/MIPS nu vă poate ajuta cu setarea altor sisteme de operare ca servere de boot în reţea. Dacă alegeţi un alt sistem de operare se presupune că ştiţi ce faceţi.

Primul pas -- configurarea DHCP. Pentru ca aplicaţia daemon ISC DHCP să răspundă cererilor BOOTP (necesar pentru SGI şi Cobalt BOOTROM), trebuie, mai întâi, să activaţi modul dinamic pentru BOOTP pentru plaja de adrese utilizate; apoi să setaţi câte o înregistrare pentru fiecare client, cu indicatori către imaginea de boot.

Cod 3.1: Instalarea Aplicaţiei DHCP de la ISC

# emerge dhcp

Odată instalată, trebuie să creaţi fişierul /etc/dhcp/dhcpd.conf. Iată configuraţia minimă pentru a putea începe.

Cod 3.2: Configuraţie minimă dhcpd.conf

# Specificaţi dhcp dezactivarea modulului de DNS dinamic.
# dhcpd va refuza să pornească fără aceasta.
ddns-update-style none;

# Creaţi o subreţea:
subnet 192.168.10.0 netmask 255.255.255.0 {
  # Plaja de adrese pentru clienţii de boot.  Nu uitaţi bitul 'dynamic-bootp'!
  pool {
    range dynamic-bootp 192.168.10.1 192.168.10.254;
  }

  # Server-ele DNS şi ruta gateway implicită -- înlocuiţi corespunzător
  option domain-name-servers 203.1.72.96, 202.47.56.17;
  option routers 192.168.10.1;

  # Specificaţi server-ului DHCP că este autoritativ pentru subreţeaua aceasta.
  authoritative;

  # Permiteţi ca BOOTP să fie utiliza în această subreţea.
  allow bootp;
}

Cu această configuraţie, se poate adăuga orice număr de clienţi în clauza subnet. Vom aminti ceea ce trebuie să adăugaţi, ulterior în acest ghid.

Următorul pas -- setarea aplicaţiei server TFTP. Este recomandat să utilizaţi tftp-hpa ca fiind singura aplicaţie TFTP cunoscută ca funcţională. Procedaţi prin instalarea acesteia, aşa cum este arătat mai jos.

Cod 3.3: Instalarea tftp-hpa

# emerge net-ftp/tftp-hpa

Aceasta vă va crea /tftproot pentru a vă stoca imaginile de boot prin reţea. O puteţi muta în orice altă locaţie doriţi. Pentru scopurile acestui ghid, vom presupune că l-aţi lăsat în locaţia implicită.

2.d. Boot-area prin Reţea a Staţiilor de Lucru SGI

Descărcarea Unei Imagini de Boot din Reţea

În funcţie de sistemul pentru care efectuaţi instalarea, există mai multe imagini posibile, disponibile. Toate sunt denumite în concordanţă cu tipul sistemului şi procesorul pentru care sunt compilate. Aceste tipuri de maşini sunt următoarele:

Nume de Cod Maşini
IP22 Indy, *Indigo 2, **Challenge S
IP26 *Indigo 2 Power
IP27 Origin 200, Origin 2000
IP28 *Indigo 2 Impact
IP30 Octane
IP32 O2

Notă: * Este o greşeală comună să amestecaţi IRIS Indigo (IP12 cu procesor R3000 sau IP20 cu procesor R4000, din care nici una nu poate rula Linux), Indigo 2 (IP22, pe care Linux este perfect funcţional), Indigo 2 Power bazat pe R8000 (ce nu poate rula deloc Linux) şi Indigo 2 Impact bazat pe R10000 (IP28, ce este în stadiu foarte experimental). Vă rugăm să reţineţi că acestea sunt maşini diferite.

Notă: ** Pe Challenge S, portul de reţea UTP este conectat de o placă SCSI WD33C95, ce nu este suportă de Linux, momentan. Datorită acestei limitări, va trebui să utilizaţi un dispozitiv de transmisie-recepţie AUI-->UTP conectat la portul AUI.

De asemenea, în fişier, r4k se referă la procesoarele din seria R4000, r5k pentru R5000, rm5k pentru RM5200 şi r10k pentru R10000. Puteţi regăsi aceste imagini disponibile la http://dev.gentoo.org/~kumba/mips/netboot.

Configurarea DHCP pentru un Client SGI

Odată ce aţi descărcat fişierul, copiaţi-l în directorul dvs. /tftpboot. (Utilizaţi bzip2 -d pentru decompresie) Apoi, editaţi fişierul dvs. /etc/dhcp/dhcpd.conf şi adăugaţi intrarea pentru clientul dvs. SGI.

Cod 4.1: Parte din fişierul dhcpd.conf pentru staţiile de lucru SGI

subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
  # ... configurarea obişnuită ...

  # Staţia SGI... modificaţi 'sgi' cu numele maşinii dvs. SGI.
  host sgi {
  
    # Adresa MAC a maşinii SGI. În mod normal, aceasta este scrisă în spatele
    # sau partea de jos a maşinii.
    hardware ethernet 08:00:69:08:db:77;

    # Server-ul TFTP de pe care se descarcă (implicit, acelaşi ca server-ul DHCP)
    next-server 192.168.10.1;

    # Adresa IP pentru a fi atribuită maşinii SGI
    fixed-address 192.168.10.3;

    # Fişierul pentru PROM pentru a-l descărca şi a efectua boot
    filename "/gentoo-r4k.img";
  }
}

Opţiuni de Kernel

Suntem aproape gata, dar mai trebuie efectuate unele ajustări. Deschideţi o consolă cu privilegii de root şi introduceţi următoarele comenzi.

Cod 4.2: Unele ajustări pentru ca maşinile SGI să utiliza aplicaţia TFTP corect

(Dezactivaţi "Path Maximum Transfer Unit", altfel SGI Prom nu va găsi imaginea de kernel)
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc

(Setaţi plaja de porturi utilizabile de către SGI PROM)
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range

Aceste informaţii ar trebui să fie suficiente pentru a permite Linux să funcţioneze corect cu memoria PROM a staţiilor SGI.

Pornirea Aplicaţiilor Daemon...

În acest punct, ar trebui să fiţi pregătiţi pentru a porni aplicaţiile daemon. Introduceţi următoarele comenzi:

Cod 4.3: Pornirea aplicaţiilor daemon DHCP şi TFTP

# /etc/init.d/dhcp start
# /etc/init.d/in.tftpd start

Dacă nimic nu a funcţionat greşit în ultimul pas, ar trebui să fiţi pregătiţi să porniţi staţia şi să urmaţi instrucţiunile din ghid. Dacă aplicaţia DHCP nu porneşte dintr-un anumit motiv, încercaţi să rulaţi 'dhcpd' din linia de comandă şi analizaţi ceea ce afişează -- dacă totul este conform specificaţiilor, ar trebui să-şi continue execuţia în fundal, altfel veţi observa 'exiting.' chiar sub afişarea erorii.

O cale uşoară pentru a verifica funcţionarea aplicaţiei tftp este să tastaţi următoarea comandă -- dacă observaţi ceva asemănător cu ceea ce urmează a fi exemplificat -- totul este bine.

Cod 4.4: Verificare dacă aplicaţia TFTPd rulează

# netstat -al | grep ^udp
udp        0      0 *:bootpc                *:*
udp        0      0 *:631                   *:*
udp        0      0 *:xdmcp                 *:*
udp        0      0 *:tftp                  *:* <-- (căutaţi această linie)

Procesul de Boot din Reţea pentru Maşina SGI

Bun, totul este pregătit, atât DHCP cât şi TFTP rulează. Acum este timpul să porniţi maşina SGI. Porniţi unitatea -- când observaţi "Running power-on diagnostics" pe ecran, fie efectuaţi click pe "Stop For Maintenance" sau apăsaţi ESCAPE. Vi se va afişa un meniu cum este următorul. Introduceţi comenzile, ca mai jos.

Cod 4.5: Meniul de mentenanţă SGI PROM

        Running power-on diagnostics

System Maintenance Menu

1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor

Option? 5
Command Monitor. Type "exit" to return to the menu.
>> bootp(): root=/dev/ram0

Din acest punct, maşina ar trebui să înceapă să descarce imaginea, iar apoi, după cel puţin 20 secunde mai târziu, să înceapă să boot-eze în Linux. Dacă totul se desfăşoară conform planului, ar trebui să vi se afişeze aplicaţia shell Busybox ash, aşa cum este exemplificat mai jos, de unde puteţi continua cu partea despre Configurarea Reţelei.

Cod 4.6: Când lucrurile merg bine...

init started:  BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary

Gentoo Linux; http://www.gentoo.org/
 Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL

 Gentoo/MIPS Netboot for Silicon Graphics Machines
 Build Date: April 26th, 2004

 * To configure networking, do the following:

 * For Static IP:
 * /bin/net-setup <IP Address> <Gateway Address> [telnet]

 * For Dynamic IP:
 * /bin/net-setup dhcp [telnet]

 * If you would like a telnetd daemon loaded as well, pass "telnet"
 * As the final argument to /bin/net-setup.

Please press Enter to activate this console.

Probleme.

Dacă maşina este încăpăţânată şi refuză să îşi descarce imaginea, poate fi dintr-o cauză din două posibilităţi, (1) aţi făcut o greşeală la unul din paşi sau (2) are nevoie de puţină înţelegere. (Nu, puneţi ciocanul deoparte!) Iată o listă de posibilităţi pe care le puteţi verifica:

  • dhcpd îi atribuie maşinii SGI o adresă IP. Ar trebui să observaţi unele mesaje despre cererile BOOTP în fişierele log de sistem. Aplicaţia tcpdump este, de asemenea, utilă în acest caz.
  • Permisiunile sunt setate corect în directorul tftp (în general /tftpboot -- în care ar trebui să aibă acces oricine
  • Verificaţi fişierele log de sistem pentru a observa ce anume raportează tftp (poate erori)

Dacă aţi verificat totul pe server şi se raportează timpi expiraţi (timeout), etc pe maşina SGI, încercaţi să tastaţi următoarele comenzi în consolă.

Cod 4.7: Convingerea SGI PROM să funcţioneze

>> resetenv
>> unsetenv netaddr
>> unsetenv dlserver
>> init
>> bootp(): root=/dev/ram0

2.e. Mediul LiveCD Gentoo/MIPS

Generalităţi

Pe maşinile Silicon Graphics, este posibil să efectuăm boot de pe un CD pentru a instala sisteme de operare. (Acesta este modul în care se instalează IRIX, spre exemplu). Recent, imagini pentru asemenea medii CD boot-abile pentru a instala Gentoo au fost fost puse la dispoziţie. Aceste medii CD au fost proiectate să funcţioneze în acelaşi mod.

Din momentul în care mediul LiveCD Gentoo/MIPS va funcţiona pe staţiile de lucru SGI Indy, Indigo 2 şi O2 echipate cu procesoare din seriile R4000 şi R5000 alte platforme ar putea fi disponibile în viitor.

Puteţi regăsi imaginile mediilor LiveCD pentru a fi descărcate de pe server-ul dvs. mirror de Gentoo preferat în directorul experimental/mips/livecd.

Atenţie: Aceste medii CD sunt foarte experimentale în acest moment. Ele pot sau nu funcţiona, deocamdată. Puteţi raporta operaţiile cu succes, precum şi cele ce se termină cu erori în interfaţa noastră Bugzilla, această discuţie de pe forum sau pe canalul IRC #gentoo-mips. Am dori foarte mult acest lucru.

Scrierea unui Mediu Live CD

Un lucru notabil este faptul că SGI PROM nici nu recunoaşte formatul ISO9660, nici are implementat nimic în legătura cu standardul de boot El Torito standard. Aceste imagini de CD sunt construite ca o partiţie SGI disklabel cu imaginea de boot în antetul de volum, ca în cazul unui disc. De aceea, trebuie să aveţi grijă în momentul în care scrieţi imaginea de CD.

Urmează un exemplu de comandă ce presupune viteza de scriere de 24x pentru o unitate IDE. Dacă aveţi o unitate SCSI, spre exemplu, va trebui să modificaţi parametrul dev corespunzător. Asemănător cu opţiunea speed - dacă întâmpinaţi probleme, ar trebui să încercaţi să micşoraţi această valoare.

Cod 5.1: Scrierea utilizând cdrecord

# bzip2 -d mips-livecd-prototype-rc2-20041027.img.bz2
# cdrecord -vv -pad speed=24 dev=ATAPI:0,0,0 -tao mips-livecd-prototype-rc2-20041027.img

Notă: Este posibil să scrieţi aceste medii CD sub Windows, presupunând că aplicaţia de scriere poate scrie imaginea exact aşa cum este. În orice caz, nimeni nu a reuşit să creeze un CD funcţional până la această dată.

Notă: Dacă nu ştiţi ce valoare să-i atribuiţi parametrului dev, rulaţi cdrecord -scanbus ca root - aceasta vă va indica locaţia exactă a unităţii dvs. de scriere.

2.f. Boot-area print Reţea a Dispozitivelor Server Cobalt

Generalităţi despre Procedura de Boot din Reţea

Spre deosebire de maşinile SGI, dispozitivele server Cobalt utilizează NFS pentru a transfera imaginea de kernel necesară procesului de boot. Puteţi boot-a maşina dvs. prin apăsarea continuă a tastelor săgeţi stânga şi dreapta în timp ce apăsaţi butonul de pornire. Maşina va încerca, apoi, să obţină o adresă IP prin BOOTP, să mount-eze directorul /nfsroot de pe server prin NFS, apoi să descarce şi să boot-eze fişierul vmlinux_raq-2800.gz ce presupune a fi un binar standard ELF.

Descărcarea Unei Imagini de Boot prin Reţea

În directorul http://dev.gentoo.org/~redhatter/mips/cobalt/netboots/ veţi găsi imaginile de boot necesare pentru a putea avea o maşină Cobalt funcţională. Fişierele vor avea numele de forma nfsroot-KERNEL-COLO-DATE-cobalt.tar -- selectaţi-o pe cea mai recentă şi dezarhivaţi-o în directorul dvs. /, aşa cum este arătat mai jos:

Cod 6.1: Despachetarea imaginii nfsroot

# tar -C / -xvf nfsroot-2.6.13.4-1.19-20051122.tar

Configurarea Aplicaţiei Server NFS

Deoarece această maşină utilizează NFS pentru a-şi descărca imaginea, va trebui să exportaţi /nfsroot pe server-ul dvs. Dacă nu aţi efectuat deja acest pas, va trebui să instalaţi pachetul net-fs/nfs-utils.

Cod 6.2: Instalarea nfs-utils

# emerge net-fs/nfs-utils

După ce aţi terminat, modificaţi fişierul dvs. /etc/exports. Puteţi seta restricţii mai mari, dacă doriţi.

Cod 6.3: Exportarea directorului /nfsroot

/nfsroot      *(ro,sync)

Acum, odată ce aţi terminat, puteţi porni aplicaţia server NFS:

Cod 6.4: Pornirea aplicaţiei server NFS

# /etc/init.d/nfs start

Dacă aplicaţia server NFS deja rula, îi puteţi specifica reîncărcarea fişierului exports utilizând exportfs.

Cod 6.5: Exportarea unui nou sistem de fişiere

# exportfs -av

Configurarea Aplicaţiei Server DHCP pe o Maşină Cobalt

Acum, configurarea legată de DHCP este relativ la obiect. Adăugaţi următoarele directive de configurare în fişierul dvs. /etc/dhcp/dhcpd.conf.

Cod 6.6: Parte din fişierul dhcpd.conf pentru Cobalt

subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
  # ... configuraţia obişnuită ...

  # Configuraţia pentru un Server Cobalt
  # Setaţi numele de reţea aici:
  host qube {
    # Calea către directorul nfsroot.
    # Această opţiune este în principal în cazul utilizării opţiunii de boot TFTP în CoLo
    # Nu ar trebui să modificaţi următoarea linie.
    option root-path "/nfsroot";

    # Adresa MAC a plăcii de reţea din server-ul Cobalt
    hardware ethernet 00:10:e0:00:86:3d;

    # Server-ul de pe care se va descărca imaginea
    next-server 192.168.10.1;

    # Adresa IP a server-ului Cobalt
    fixed-address 192.168.10.2;

    # Locaţia fişierului default.colo relativă la /nfsroot
    # Nu ar trebui să o modificaţi.
    filename "default.colo";
  }
}

Pornirea Aplicaţiilor Daemon...

În acest punct, sunteţi pregătiţi să porniţi aplicaţiile daemon. Introduceţi următoarele comenzi:

Cod 6.7: Pornirea aplicaţiilor daemon DHCP şi NFS

# /etc/init.d/dhcp start
# /etc/init.d/nfs start

Dacă nimic nu a funcţionat greşit în ultimul pas, ar trebui să fiţi pregătiţi să porniţi staţia şi să urmaţi instrucţiunile din ghid. Dacă aplicaţia DHCP nu porneşte dintr-un anumit motiv, încercaţi să rulaţi 'dhcpd' din linia de comandă şi analizaţi ceea ce afişează -- dacă totul este conform specificaţiilor, ar trebui să-şi continue execuţia în fundal, altfel veţi observa 'exiting.' chiar sub afişarea erorii.

Procesul de Boot din Reţea pentru Maşina Cobalt

Bun, totul este pregătit, atât DHCP cât şi NFS rulează. Acum este timpul să porniţi maşina Cobalt. Introduceţi cablul null-modem şi setaţi terminalul serial să utilizeze viteza de transmisie de 115200 baud, 8 biţi, fără paritate, 1 bit de stop, emulare VT100. Odată ce aţi terminat acest pas, reţineţi apăsate continuu tastele săgeţi stânga şi dreapta în timp ce apăsaţi butonul de pornire a unităţii.

Dacă totul funcţionează corect, panoul din spate ar trebui să afişeze "Net Booting", ar trebui să observaţi o activitate pe reţea, la scurt timp urmată de apariţia aplicaţiei CoLo. Pe panoul din spate, navigaţi prin meniu până când este afişat "Network (NFS)", apoi apăsaţi ENTER. Ar trebui să observaţi maşina pornind pe consola serială.

Cod 6.8: Boot-area imaginii de kernel

elf: 80080000 <-- 00001000 6586368t + 192624t
elf: entry 80328040
net: interface down
CPU revision is: 000028a0
FPU revision is: 000028a0
Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes.
Primary data cache 32kB 2-way, linesize 32 bytes.
Linux version 2.4.26-mipscvs-20040415 (root@khazad-dum) (gcc version 3.3.3...
Determined physical RAM map:
 memory: 08000000 @ 00000000 (usable)
Initial ramdisk at: 0x80392000 (3366912 bytes)
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,115200 root=/dev/ram0
Calibrating delay loop... 249.85 BogoMIPS
Memory: 122512k/131072k available (2708k kernel code, 8560k reserved, 3424k dat)

Dacă totul se desfăşoară conform planului, ar trebui să vi se afişeze aplicaţia shell Busybox ash, aşa cum este exemplificat mai jos, de unde puteţi continua cu partea despre Configuring Your Network.

Cod 6.9: Când lucrurile merg bine...

VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 280k freed
init started:  BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary

Gentoo Linux; http://www.gentoo.org/
 Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL

 Gentoo/MIPS Netboot for Cobalt Microserver Machines
 Build Date: April 26th, 2004

 * To configure networking, do the following:

 * For Static IP:
 * /bin/net-setup <IP Address> <Gateway Address> [telnet]

 * For Dynamic IP:
 * /bin/net-setup dhcp [telnet]

 * If you would like a telnetd daemon loaded as well, pass "telnet"
 * As the final argument to /bin/net-setup.

Please press Enter to activate this console.

Probleme.

Dacă maşina este încăpăţânată şi refuză să-şi descarce imaginea, se poate întâmpla din două cauze, (1) fie aţi greşit undeva, sau (2) are nevoie de puţină răbdare. (Nu, puneţi barosul jos!) Iată o listă de lucruri pe care le puteţi verifica:

  • dhcpd îi atribuie maşinii Cobalt o adresă IP. Ar trebui să observaţi unele mesaje despre cererile BOOTP în fişierele log de sistem. Aplicaţia tcpdump este, de asemenea, utilă în acest caz.
  • Permisiunile sunt setate corect în directorul dvs. /nfsboot (ar trebui să fie accesibil oricui)
  • Asiguraţi-vă că server-ul NFS rulează şi exportă directorul /nfsroot. Verificaţi acest lucru utilizând exportfs -v pe server.

3. Configurarea Reţelei

3.a. Detectarea Automată a Reţelei

Poate Funcţionează Pur şi Simplu?

Dacă sistemul dumneavoastră este conectat la o reţea deservită de un server DHCP, este foarte probabil ca suportul de reţea să fie deja configurat automat. Dacă este aşa, puteţi beneficia de avantajul comenzilor incluse pe mediul Installation CD cum ar fi ssh, scp, ping, irssi, wget şi links, alături de altele.

Dacă reţeaua a fost configurată automat, comanda /sbin/ifconfig ar trebui să afişeze informaţii despre alte câteva interfeţe în afara lo, cum ar fi eth0:

Cod 1.1: /sbin/ifconfig pentru o reţea configurată

# /sbin/ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 

Opţional: Configurare Proxy

Dacă aveţi acces la Internet prin intermediul unui proxy, va trebui să setaţi informaţiile necesare în timpul instalării. Este foarte uşor să specificaţi folosirea unui proxy: trebuie doar să definiţi o variabilă ce conţine informaţiile despre serverul folosit.

În majoritatea cazurilor, este suficient să definiţi variabilele folosind adresa serverului proxy. Ca exemplu, vom presupune că aceasta este proxy.gentoo.org şi portul este 8080.

Cod 1.2: Definirea serverelor proxy

(Pentru traficul HTTP)
# export http_proxy="http://proxy.gentoo.org:8080"
(Pentru traficul FTP)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Pentru traficul RSYNC)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Dacă serverul proxy folosit necesită autentificare cu nume şi parolă, trebuie să folosiţi următoarea sintaxă pentru definirea variabilelor:

Cod 1.3: Adăugarea nume/parolă la variabilele ce definesc proxy

http://username:password@server

În funcţie de mediul de pe care aţi ales să instalaţi Gentoo puteţi continua sau nu fără reţea (şi acces Internet). Nu, nu ne jucăm cu mintea dumneavoastră =)

În general aveţi nevoie de a configura reţeaua (şi accesul la Internet). Totuşi, Gentoo vă permite şi instalarea fără o conexiune la Internet, acest lucru fiind posibil numai cu ajutorul LiveCD-urilor Gentoo Universal.

De ce am nevoie de reţea?

Instalând Gentoo de pe Internet veţi avea toate actualizările la zi. Veţi avea o instalarea bazată pe cel mai recent Portage (care este o colecţie de pachete furnizate împreună cu instrumentele necesare administrării lor). Acesta este de altfel motivul pentru care instalarea de pe Internet este preferată. Totuşi, unele persoane nu pot sau nu vor să instaleze Gentoo pe un sistem conectat la Internet.

Dacă sunteţi în această situaţie atunci sunteţi nevoiţi să folosiţi LiveCD-urile Gentoo Universal. Acest LiveCD include cod sursă, o versiune completă a Portage şi instrumentele necesare instalării unui sistem de bază Gentoo, şi chiar mai mult. Această metodă are însă preţul ei: nu veţi avea ultimele versiuni ale programelor instalate, deşi diferenţele vor fi minime.

Dacă vreţi să urmaţi instalarea fără a fi conectaţi la internet şi doriţi să folosiţi un CD Universal Gentoo LiveCD, săriţi peste restul acestui capitol şi continuaţi cu Pregătirea Discurilor. Altfel, continuaţi cu secţiunile despre configurarea suportului de reţea ce urmează.

Testarea reţelei

Aţi putea încerca să daţi ping în serverele de nume ale provider-ului dumneavoastră (cele scrise în /etc/resolv.conf) şi apoi într-un site la alegere, doar pentru a vă asigura că pachetele dumneavoastră ajung pe internet şi rezolvarea numelor funcţionează corect, etc.

Cod 1.4: Exemplu de testare a reţelei

# ping -c 3 www.yahoo.com

Dacă puteţi utiliza, acum, reţeaua, puteţi sări peste restul acestei secţiuni şi continua cu Pregătirea Discurilor. Dacă nu, citiţi mai departe.

3.b. Configurarea Automată a Reţelei

Dacă reţeaua nu funcţionează imediat, unele medii de instalare vă permit să folosiţi net-setup (pentru reţele obişnuite sau wireless) sau adsl-setup (pentru conexiuni ADSL) sau pptp (pentru conexiuni PPTP - disponibilă doar pe arhitectura x86).

Dacă suportul dumneavoastră de instalare nu conţine nici un astfel de instrument sau reţeaua nu funcţionează încă, continuaţi cu Configurarea Manuală a Reţelei.

Implicit: Folosirea net-setup

Cea mai simplă cale de a configura reţeaua dacă aceasta nu s-a efectuat în mod automat este să rulaţi scriptul net-setup:

Cod 2.1: Rularea scriptului net-setup

# net-setup eth0

net-setup vă va interoga despre câteva lucruri despre reţea. La final ar trebui să aveţi o reţea funcţională. Testaţi reţeaua în modul descris anterior. Dacă testele sunt pozitive, felicitări! Acum sunteţi gata să instalaţi Gentoo. Săriţi peste restul acestei secţiuni şi continuaţi cu Pregătirea Discurilor.

Dacă reţeua dumneavoastră tot nu este funcţională, continuaţi cu Configurarea Manuală a Reţelei.

Alternativ: Folosirea RP-PPPoE

Presupunând că aveţi nevoie de PPPoE pentru a vă conecta la internet, mediul Installation CD (orice versiune) a simplificat lucrurile pentru dumneavoastră incluzând scriptul rp-pppoe. Folosiţi scriptul adsl-setup pentru a configura conexiunea. Va trebui să specificaţi care anume interfaţă de reţea este conectată la modemul adsl, numele şi parola, ip-urile serverelor de nume (DNS) şi dacă doriţi sau nu un firewall minim.

Cod 2.2: Folosirea rp-pppoe

# adsl-setup
# adsl-start

Dacă ceva nu a funcţionat, verificaţi din nou dacă aţi introdus numele şi parola corecte uitându-vă în /etc/ppp/pap-secrets sau /etc/ppp/chap-secrets şi asiguraţi-vă că aţi specificat corect interfaţa folosită pentru conectare. Dacă intefaţa de reţea nu există, va trebui să încărcaţi modulul corespunzător. În acest caz ar trebui să continuaţi cu Configurarea Manuală a Reţelei unde este explicat modul de încărcare a modulelor necesare.

Dacă totul este în regulă, continuaţi cu Pregătirea Discurilor.

Alternativ: Folosirea PPTP

Notă: Suportul PPTP este disponibil doar pentru arhitectura x86

Dacă aveţi nevoie de PPTP, puteţi folosi scriptul pptpclient disponibil pe mediul Installation CD. Dar, mai întâi, trebuie să vă asiguraţi că aveţi o configuraţie corectă. Editaţi /etc/ppp/pap-secrets sau /etc/ppp/chap-secrets astfel încât acestea să conţină combinaţia corectă nume/parolă:

Cod 2.3: Editare /etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

Ajustăm, dacă este necesar, /etc/ppp/options.pptp:

Cod 2.4: Editare /etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

Când totul este în regulă, doar rulaţi pptp (împreună cu opţiunile pe care nu le-aţi putut seta în options.pptp) pentru a vă conecta la server:

Cod 2.5: Conectarea la un server dial-in

# pptp <server ip>

Acum continuaţi cu Pregătirea Discurilor.

3.c. Configurarea manuală a reţelei

Încărcarea modulelor potrivite

La boot-area de pe mediul Installation CD, se încearcă detectarea tuturor dispozitivelor hardware şi încărcarea modulelor kernel (driver-e) necesare acestora. În marea majoritate a cazurilor, LiveCD-ul face o treabă foarte bună (detectând aproape tot). Totuşi, în unele cazuri, este posibil să nu fie încărcate automat unele module necesare.

Dacă net-setup sau adsl-setup eşuează, atunci este posibil ca placa de reţea să nu fi fost autodetectată. Aceasta presupune ca dumneavoastră să încarci manual modulele kernel corespunzătoare.

Pentru a afla ce module sunt disponibile pentru reţea, folosiţi ls:

Cod 3.1: Căutarea modulelor disponibile

# ls /lib/modules/`uname -r`/kernel/drivers/net

Dacă aţi găsit driver-ul necesar plăcii de reţea, folosiţi modprobe pentru a-l încărca:

Cod 3.2: Folosirea modprobe pentru a încărca un modul kernel

(Ca exemplu, noi încărcăm modulul pcnet32 )
# modprobe pcnet32

Pentru a verifica dacă placa dumneavoastră de reţea este detectată, folosiţi ifconfig. O placă de reţea detectată ar trebui să furnizeze un rezultat de genul:

Cod 3.3: Testarea disponibilităţii plăcii de reţea, rezultat în caz de succes

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Dacă totuşi primiţi următoarea eroare, placa de reţea nu a fost detectată:

Cod 3.4: Testarea disponibilităţii plăcii de reţea, rezultat în caz de eşec

# ifconfig eth0
eth0: error fetching interface information: Device not found

Dacă aveţi mai multe plăci de reţea în sistemul dumneavoastră acestea sunt numite eth0, eth1, etc. Asigurăţi-vă că placa pe care doriţi să o folosiţi funcţionează corespunzător şi amintiţi-vă să folosiţi numele corespunzător împreună cu acest document. Noi vom presupune că este folosită placa eth0.

Presupunând că acum placa de reţea este detectată, puteţi reîncerca net-setup sau adsl-setup (acum ar trebui să meargă), dar pentru cei cărora le place calea dificilă vom explica cum să configuraţi manual reţeaua.

Selectaţi una din următoarele secţiuni în funcţie de tipul reţelei:

Folosirea DHCP

DHCP (Dynamic Host Configuration Protocol) face posibilă obţinerea în mod automat a informaţiilor necesare configurării reţelei (adresa IP, netmask, adresa broadcast, gateway, servere de nume etc.). Aceasta funcţionează numai dacă în reţeaua dumneavoastră există un server DHCP (sau provider-ul dumneavoastră de internet vă furnizează serviciul DHCP). Pentru ca placa de reţea să fie configurată automat folosiţi dhcpcd:

Cod 3.5: Folosirea dhcpcd

# dhcpcd eth0
Unii administratori de reţea vă impun să folosiţi
pentru maşina dumneavoastră numele de host şi domeniu furnizate de serverul DHCP.
În acest caz, folosiţi
# dhcpcd -HD eth0

Dacă totul a fost în regulă (încercaţi ping în câteva adrese internet, de exemplu Google), atunci aveţi totul setat şi sunteţi gata pentru a continua. Săriţi peste restul acestei secţiuni şi continuaţi cu Pregătirea Discurilor.

Pregătirea pentru acces Wireless

Notă: Suportul pentru comanda iwconfig este disponibil doar pentru mediile Installation CD pentru arhitecturile x86, amd64 şi ppc. Puteţi, însă, să faceţi să funcţioneze placa wireless urmând instrucţiunile din proiectul linux-wlan-ng.

Dacă folosiţi o placă wireless (802.11), trebuie să efectuaţi toate setările necesare înainte de a putea să continuaţi. Pentru a vedea setările curente ale plăcii dumneavoastră, puteţi folosi iwconfig. Rularea iwconfig poate afişa ceva de genul:

Cod 3.6: Listarea setărilor curente pentru placa wireless

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"                                   
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2    
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535               
          Retry limit:16   RTS thr:off   Fragment thr:off                       
          Power Management:off                                                  
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm        
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx          
          excessive retries:237 Invalid misc:350282 Missed beacon:84            

Notă: Unele plăci wireless pot avea numele wlan0 sau ra0 în loc de eth0. Rulaţi iwconfig fără nici un parametru, pentru a determina numele corect al dispozitivului.

Pentru majoritatea utilizatorilor, sunt numai două setări importante de schimbat, ESSID (adică numele reţelei wireless) şi/sau cheia WEP. Dacă ESSID şi adresa Access Point listate sunt deja ca cele ale Access Point-ului la care vă conectaţi şi dacă nu folosiţi WEP, atunci reţeaua wireless este funcţională. Dacă aveţi nevoie să schimbaţi ESSID-ul sau să specificaţi o cheie WEP, puteţi folosi următoarele comenzi:

Cod 3.7: Schimbarea ESSID şi/sau adăugarea cheii WEP

(Aceasta setează numele reţelei wireless la "GentooNode")
# iwconfig eth0 essid GentooNode

(Aceasta setează cheia WEP în notaţie hexa)
# iwconfig eth0 key 1234123412341234abcd

(Acesta setează cheia WEP, ASCII - o prefixăm cu  "s:")
# iwconfig eth0 key s:some-password

Puteţi acum revedeţi setările pentru placa wireless folosind iwconfig. Odată ce aveţi placa wireless funcţională, puteţi continua cu configurarea adresei IP aşa cum este descris în următoarea secţiune (Terminologia Utilizată în Reţelistică) sau să folosiţi utilitarul net-setup descris anterior.

Terminologia Utilizată în Reţelistică

Notă: Dacă ştiţi adresele dumeavoastră IP, broadcast, netmask si serverele de nume, atunci puteţi sări peste această subsecţiune şi continua cu Folosirea ifconfig şi route.

Dacă toate încercările de mai sus au eşuat, va trebui să vă configuraţi reţeaua manual. Acest lucru nu este deloc dificil. În schimb, trebuie să vă familiarizaţi cu câteva noţiuni de reţelistică necesare configurării reţelei conform cerinţelor dvs. Când veţi termina de citit această parte, veţi şti ce este un gateway, la ce foloseşte netmask, cum este formată adresa broadcast şi de ce aveţi nevoie de servere de nume.

Într-o reţea, staţiile sunt identificate prin adresa IP (Internet Protocol address). O astfel de adresă este o combinaţie de patru numere între 0 şi 255. Ei bine, cel puţin aşa o percepem noi. În realitate, o adresă IP constă în 32 biţi (unu şi zero). Să vedem un exemplu:

Cod 3.8: Exemplu de adresă IP

Adresa IP (numeric):   192.168.0.2
Adresa IP (binar):     11000000 10101000 00000000 00000010
                       -------- -------- -------- --------
                          192      168       0        2

O adresă IP identifică în mod unic o staţie din punctul de vedere al subreţelelor accesibile (spre ex. fiecare staţie care este accesibilă trebuie să deţină o adresă IP unică). Pentru a putea distinge staţiile din interiorul reţelei faţă de cele din exterior, adresa IP este compusă din două părţi: partea network şi partea host.

Separarea este efectuată folosind netmask, o colecţie de unu urmată de o colecţie de zero. Partea din IP care se mapează pe unu este partea network, cealaltă parte este partea host. În mod uzual, netmask (masca reţelei) se poate scrie ca o adresă IP.

Cod 3.9: Exemplu de depanare network/host

Adresa IP:     192      168      0         2
            11000000 10101000 00000000 00000010
Netmask:    11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                    Network              Host

Cu alte cuvinte, 192.168.0.14 este încă, în exemplu nostru, în reţea, dar 192.168.1.2 nu.

Adresa broadcast este adresa IP cu aceeaşi parte network ca şi reţeua noastră, dar cu partea host formată numai din unu. Fiecare staţie din reţea ascultă pe această adresă IP. Este folosită pentru transmisii de pachete broadcast.

Cod 3.10: Adresa Broadcast

Adresa IP:     192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Network             Host

Pentru a putea naviga pe internet, trebuie să cunoaşteţi care staţie partajează conexiunea la Internet. Această staţie se numeşte gateway. Cum aceasta este o staţie obişnuită are şi ea o adresă IP obişnuită (de exemplu 192.168.0.1).

Anterior am stabilit că fiecare staţie are propria adresă IP. Pentru a putea recunoaşte staţiile se asociază un nume (cum ar fi dev.gentoo.org) unei adrese IP (cum ar fi 64.5.62.82). Un astfel de serviciu este numit serviciu de nume. Pentru a folosi un astfel de serviciu, trebuie să definiţi serverele de nume în /etc/resolv.conf.

În unele cazuri, staţia gateway este de asemenea şi server de nume. Dacă nu, va trebui să introduceţi adresele serverelor de nume furnizate de ISP-ul dumneavoastră.

Sintetizând, veţi avea nevoie de următoarele informaţii pentru a continua:

Element reţea Exemplu
Adresa IP 192.168.0.2
Netmask 255.255.255.0
Broadcast 192.168.0.255
Gateway 192.168.0.1
Server(e) de nume 195.130.130.5, 195.130.130.133

Folosirea ifconfig şi route

Setarea unei reţele constă în trei paşi. Întâi ne vom atribui o adresă IP folosind ifconfig. Apoi vom seta ruta către gateway folosind route. Apoi vom finaliza punând adresele IP corespunzătoare serverelor de nume în /etc/resolv.conf.

Pentru a atribui o adresă IP, va trebui să cunoaşteţi adresele IP, broadcast şi netmask. Apoi executaţi următoarea comandă, înlocuind ${IP_ADDR} cu adresa IP, ${BROADCAST} cu adresa broadcast şi ${NETMASK} cu netmask-ul corespunzător:

Cod 3.11: Folosirea ifconfig

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

Acum setaţi ruta implicită folosind route. Înlocuiţi ${GATEWAY} cu adresa IP a gateway-ului:

Cod 3.12: Folosirea route

# route add default gw ${GATEWAY}

Acum deschideţi /etc/resolv.conf cu editorul favorit (în exemplu nostru, vom folosi nano):

Cod 3.13: Crearea /etc/resolv.conf

# nano -w /etc/resolv.conf

Acum completaţi cu adresele serverelor de nume folosind următoarea machetă. Asiguraţi-vă că înlocuiţi ${NAMESERVER1} şi ${NAMESERVER2} cu adresele IP corespunzătoare:

Cod 3.14: machetă /etc/resolv.conf

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Aceasta este tot. Acum testaţi reţeaua folosind ping către câteva servere din Internet (ca de exemplu Google). Funcţionează? Felicitări atunci. Sunteţi gata să instalaţi Gentoo. Continuaţi cu Pregătirea Discurilor.

4. Pregătirea Discurilor

4.a. Introducere în Dispozitive Bloc

Dispozitive Bloc

Vom arunca o privire atentă asupra aspectelor în legătură cu discurile din Gentoo Linux şi Linux, în general, incluzând sistemele de fişiere, partiţii şi dispozitive bloc. Apoi, odată ce vă familiarizaţi cu toate aspectele despre discuri şi sisteme de fişiere, veţi fi ghidaţi prin procesul de setare al partiţiilor şi sistemelor de fişiere pentru instalarea dvs. de Gentoo Linux.

Pentru a începe, vom face introducerea dispozitivelor bloc. Cel mai renumit dispozitiv bloc este probabil cel care reprezintă primul hard-disk SCSI într-un sistem Linux, şi anume /dev/sda.

Dispozitivele bloc amintite mai sus, reprezintă o interfaţă abstractă pentru disc. Programele utilizator pot folosi aceste dispozitive bloc pentru a interacţiona cu discul dvs. fără a avea grija dacă hard-disk-urile sunt IDE, SCSI sau altceva. Programul poate adresa ceea ce urmează să se stocheze pe disc ca o mulţime continuă de blocuri de 512 octeţi accesibile aleator.

Partitiţii

Deşi este teoretic posibil să utilizăm un disc întreg pentru a găzdui sistemul dvs. Linux, acesta este un lucru foarte rar pus în practică. În loc, dispozitivele bloc întregi sunt împărţite în dispozitive bloc mai mici şi mai uşor de manipulat. Acestea sunt numite partiţii.

4.b. Proiectarea unei Scheme de Partiţionare

Cât de Multe şi Cât de Mari?

Numărul de partiţii este în foarte mare măsură dependent de mediul dvs. Spre exemplu, dacă aveţi un număr foarte mare de utilizatori, cel mai probabil veţi dori să aveţi directorul /home separat, deoarece sporeşte securitatea şi facilitează operaţiile de backup. Dacă instalaţi Gentoo ca server de mail, directorul dvs. /var ar trebui să fie separat, pentru că toate mail-urile sunt stocate în /var. O bună alegere a sistemului de fişiere va mări la maxim performanţele. Serverele de jocuri vor avea o partiţie /opt separată, deoarece majoritatea aplicaţiilor server pentru jocuri sunt instalate acolo. Motivul este similar cu cel pentru /home: securitate şi backup. Veţi dori în mod sigur să vă păstraţi /usr mare: nu numai că va conţine majoritatea aplicaţiilor, dar numai structura Portage ocupă în jur de 500 MOcteţi, excluzând sursele ce sunt stocate în acesta.

După cum puteţi observa, depinde foarte mult scopul pe care doriţi să-l atingeţi. Partiţii sau volume separate au următoarele avantaje:

  • Puteţi alege cel mai performant sistem de fişiere pentru fiecare partiţie sau volum
  • Întregul sistem nu poate rămâne fără spaţiu liber dacă o aplicaţie nefuncţională scrie în continuu fişiere pe o partiţie sau volum
  • Dacă este necesar, verificările sistemului de fişiere sunt reduse ca timp, deoarece se pot executa mai multe verificări în paralel (deşi acest avantaj este mai mare în cazul discurilor multiple, decât în cel al partiţiilor multiple)
  • Securitatea poate fi îmbunătăţită prin mount-area unor partiţii sau volume doar pentru citire, în mod nosuid (biţii setuid sunt ignoraţi), noexec (biţii pentru execuţie sunt ignoraţi), etc.

În orice caz, partiţiile multiple au un mare dezavantaj: dacă nu sunt configurate corect, pot cauza ca un sistem să aibă foarte mult loc liber pe o partiţie şi fără loc liber pe alta. Există, de asemenea, o limitare la 15 partiţii pentru SCSI şi SATA.

4.c. Utilizarea fdisk pe arhitectura MIPS pentru a vă partiţiona discul

Maşinile SGI: Crearea SGI Disk Label

Toate discurile pe un sistem SGI necesită definirea informaţiei SGI Disk Label, ce oferă o funcţionalitate similară cu zonele din Sun şi MS-DOS -- Stochează informaţii despre partiţiile de pe disc. Crearea unei zone SGI Disk Label va crea două partiţii speciale pe disc:

  • Antetul de Volum SGI (a 9-a partiţie): Această partiţie este importantă. Pe ea va fi stocată aplicaţia bootloader şi, în unele cazuri, va conţine, de asemenea, imaginile de kernel.
  • Volumul SGI (a 11-a partiţie): Această partiţie este similară ca scop cu a treia partiţie a Sun Disklabel ca "Întregul Disc". Această partiţie acoperă întregul disc, şi ar trebui lăsată neatinsă. Ea nu are un scop special, decât să asiste componenta PROM într-un mod nedocumentat (sau este utilizat de IRIX într-un anumit mod).

Atenţie: Antetul de Volum SGI trebuie să înceapă la cilindrul 0. Dacă nu se întâmplă aşa, nu veţi putea boot-a de pe disc.

Urmează un extract dintr-o sesiune de fdisk. Citiţi şi adaptaţi-l după nevoile dvs...

Cod 3.1: Crearea SGI Disklabel

# fdisk /dev/sda

Command (m for help): x

Expert command (m for help): m
Command action
   b   move beginning of data in a partition
   c   change number of cylinders
   d   print the raw data in the partition table
   e   list extended partitions
   f   fix partition order
   g   create an IRIX (SGI) partition table
   h   change number of heads
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   s   change number of sectors/track
   v   verify the partition table
   w   write table to disk and exit

Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be unrecoverably lost.

Expert command (m for help): r

Command (m for help): p

Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes

----- partitions -----
Pt#     Device  Info     Start       End   Sectors  Id  System
 9:  /dev/sda1               0         4     10240   0  SGI volhdr
11:  /dev/sda2               0     17481  35803136   6  SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----

Command (m for help):

Notă: Dacă discul deja conţine o informaţie SGI Disklabel, atunci fdisk nu vă va mai oferi opţiunea de a crea una nouă. Există două soluţii în acest caz. Una este să creaţi o informaţie Sun sau MS-DOS, scrieţi schimbările pe disc şi restartaţi fdisk. A doua este să suprascrieţi tabela de partiţii cu date nule prin intermediul următoarei comenzi: dd if=/dev/zero of=/dev/sda bs=512 count=1.

Redimensionarea Antetului de Volum SGI la mărimea corectă

Important: Acest pas este deseori necesar, datorită unui bug în fdisk. Din unele motive, antetul de volum nu este creat corect, rezultatul final fiind faptul că începe şi se termină la cilindrul 0. Aceasta previne crearea mai multor partiţii. Pentru a rezolva această problemă... citiţi mai departe.

Acum, că informaţi SGI DiskLabel este creată, partiţiile pot fi acum definite. În exemplul de mai sus, aveţi deja definite două partiţii. Acestea sunt cele două partiţii speciale menţionate mai anterior şi nu ar trebui în mod normal să fi alterate. Dar, pentru a instala Gentoo, vom avea nevoie să încărcăm o aplicaţie bootloader şi, posibil, mai multe imagini de kernel (în funcţie de tipul sistemului) direct în antetul de volum. Antetul de volum poate stoca până la opt imagini de orice mărimi, fiecare imagine cu numele de până la opt caractere.

Notă: Pe sistemele SGI, există două aplicaţii bootloader disponibile: arcboot şi arcload. Momentan, doar Indy, Indigo2 (R4k variety), Challenge S şi O2 sunt capabile să utilizez arcboot ca aplicaţie bootloader, în timp ce arcload rulează pe toate maşinile SGI suportate de Linux. Spre deosebire de arcboot totuşi, arcload nu poate citi, în prezent, partiţii EXT2/3, şi astfel, acesta îşi încarcă imaginile de kernel din antetul volum.

Procesul de a mări capacitatea antetului de volum nu este chiar cum ar trebui; este nevoie de unele trucuri pentru aceasta. Nu se poate şterge şi re-adăuga antetul de volum din cauza comportamentului ciudat al fdisk. În exemplul oferit mai jos, vom crea un antet de volum de 50 MOcteţi alături de o partiţie de 50 MOcteţi pentru /boot. Schema actuală a discului dvs. poate varia, dar aceasta este doar în scop ilustrativ.

Cod 3.2: Redimensionarea Antetului de Volum SGI corect

Command (m for help): n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
 Last cylinder (51-8682, default 8682): 101
(Observaţi cum fdisk permite doar Partiţiei #1 să fie recreată                   )
(începând cu minimum cilindrul 5? Aţi încercat să ştergeţi şi să recreaţi        )
(Antetul de Volum SGI în acest fel, aceasta este aceeaşi problemă pe care aţi fi )
(întâlnit-o. În exemplul nostru, vrem ca /boot să fie de 50 MOcteţi, deci va     )
(începe de la cilindrul 51 (Antetul de Volum trebuie să înceapă de la cilindrul  )
(0, vă aminitiţi?), şi să-i setăm cilindrul la 101, care va fi aproximativ 50 MO )
((+/- 1-5 MO).                                                                   )

Command (m for help): d
Partition number (1-16): 9

(Ştergeţi partiţia #9 (Antetul de Volum SGI)

Command (m for help): n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
 Last cylinder (0-50, default 50): 50

(Re-creaţi Partiţia #9, ce se va termina chiar înainte de Partiţia #1)

Dacă nu sunteţi siguri cum să utilizaţi fdisk, puteţi consulta explicaţia ulterioară în acest document despre partiţionarea pe dispozitivele Cobalt. Conceptele sunt exact aceleaşi - trebuie doar să vă amintiţi să nu modificaţi informaţiile antetul de volum şi întregul disc.

Odată terminat procesul, este sigur să creaţi restul partiţiilor care le doriţi. După ce toate partiţiile sunt create, asiguraţi-vă că setaţi identificatorul partiţiei pentru swap la 82, care este Linux Swap. Implicit, va fi 83, Linux Native.

Acum că partiţiile dvs. sunt create, puteţi continua cu Crearea Sistemelor de Fişiere.

Maşinile Cobalt: Partiţionarea Discului Dvs.

Pe maşinile Cobalt, BOOTROM se va aştepta la o zonă MBR MS-DOS, deci partiţionarea discului este relativ concisă -- de fapt se face exact cum aţi face-o pe o maşină Intel x86. Oricum, sunt unele lucruri care trebuie să le reţineţi.

  • Aplicaţia firmware se va aştepta ca /dev/hda1 să fie o partiţie Linux formatată ca EXT2 Revision 0. Partiţiile EXT2 Revision 1 NU vor funcţiona! (Cobalt BOOTROM recunoaşte doar EXT2r0)
  • Partiţia menţionată anterior trebuie să conţină o imagine ELF arhivată cu gzip, vmlinux.gz în rădăcina partiţiei, pe care o va considera un kernel şi o va încărca

Din acest motiv, vă recomandăm să creaţi o partiţie /boot cu o mărime de ~20MOcteţi formatată ca EXT2r0 după care puteţi instala CoLo şi imaginile dvs. de kernel. Aceasta vă permite să rulaţi un sistem de fişiere modern (EXT3 sau ReiserFS) pentru partiţia rădăcină.

Vom presupune că aţi creat /dev/hda1 pentru a efectua ulterior mount ca o partiţie /boot. Dacă doriţi această partiţie /, va trebui să reţineţi aşteptările aplicaţiei PROM.

Deci, să continuăm... Pentru a crea partiţiile, tastaţi fdisk /dev/hda la prompt. Comenzile principale pe care trebuie să le cunoaşteţi sunt următoarele:

  • o: Ştergeţi tabela de partiţii veche, începând cu o tabelă de partiţii MS-DOS goală
  • n: Creaţi o nouă partiţie
  • t: Schimbarea Tipului Partiţiei
    • Utilizaţi tipul 82 pentru Linux Swap, 83 pentru Linux FS
  • d: Ştergeţi o partiţie
  • p: Afişaţi tabela de partiţii
  • q: Ieşire -- lasă tabela de partiţii neatisă.
  • w: Ieşire -- scrie tabela de partiţii curentă.

Cod 3.3: Partiţionarea discului

# fdisk /dev/hda

The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups 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)

(Începeţi prin a şterge toate partiţiile existente)
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups 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)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

(Puteţi verifica, acum, că tabela de partiţii este goală utilizând comanda 'p')

Command (m for help): p

Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System

(Creaţi partiţia /boot)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1

(Trebuie doar să apăsaţi ENTER pentru a accepta valorile implicite)

First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M

(şi acum, dacă tastaţi 'p' din nou, ar trebui să observaţi noua partiţie)
Command (m for help): p

Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          40       20128+  83  Linux

(Restul, preferăm să îl alocăm într-o partiţie extinsă, pe care o vom crea)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2

(Din nou, valorile implicite sunt bune, deci apăsaţi doar ENTER.)

First cylinder (41-19870, default 41):
Using default value 41

(Dorim să utilizăm tot discul, aici, deci apăsaţi ENTER din nou)
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870

(Acum, partiţia / -- utilizăm partiţii separate pentru /usr, /var, etc... deci / poate fi mică. Modificaţi după preferinţe.)

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (41-19870, default 41):<Press ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M

(... şi în mod similar pentru alte partiţii ...)

(Ultimul, dar nu cel din urmă, spaţiul swap. Recomandăm cel puţin 250 MOcteţi swap, preferabil 1 GOctet)

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Press ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER>
Using default value 19870

(Acum, dacă verificăm tabela noastră de partiţii, totul ar trebui să fie potrivit,
cu excepţia unui singur lucru...)

Command (m for help): p

Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks      ID  System
/dev/hda1               1          21       10552+  83  Linux
/dev/hda2              22       19870    10003896    5  Extended
/dev/hda5              22        1037      512032+  83  Linux
/dev/hda6            1038        5101     2048224+  83  Linux
/dev/hda7            5102        9165     2048224+  83  Linux
/dev/hda8            9166       13229     2048224+  83  Linux
/dev/hda9           13230       17293     2048224+  83  Linux
/dev/hda10          17294       19870     1298776+  83  Linux

(Observaţi cum partiţia #10, spaţiul nostru swap, este tot de tipul 83?)

Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)

(Aceasta ar trebui să rezolve... doar pentru verificare...)

Command (m for help): p

Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks      ID  System
/dev/hda1               1          21       10552+  83  Linux
/dev/hda2              22       19870    10003896    5  Extended
/dev/hda5              22        1037      512032+  83  Linux
/dev/hda6            1038        5101     2048224+  83  Linux
/dev/hda7            5102        9165     2048224+  83  Linux
/dev/hda8            9166       13229     2048224+  83  Linux
/dev/hda9           13230       17293     2048224+  83  Linux
/dev/hda10          17294       19870     1298776+  82  Linux Swap

(Acum, scriem noua noastră tabelă de partiţii.)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#

Şi asta este totul. Ar trebui, acum, să procedaţi la următorul pas: Crearea Sistemelor de Fişiere.

4.d. Crearea Sistemelor de Fişiere

Introducere

Acum, că partiţiile dvs. sunt create, este timpul să aplicăm un sistem de fişiere pe acestea. Dacă nu vă pasă ce sistem de fişiere să alegeţi şi sunteţi mulţumiţi cu ceea ce utilizăm noi implicit în acest manual, continuaţi cu Aplicarea unui Sistem de Fişiere pe o Partiţie. Altfel, citiţi mai departe pentru a învăţa despre sistemele de fişiere disponibile...

Sisteme de Fişiere?

Sunt disponibile mai multe sisteme de fişiere. ReiserFS, EXT2 şi EXT3 sunt considerate stabile pe arhitectura MIPS, celelalte fiind considerate experimentale.

ext2 este cel mai încercat sistem de fişiere Linux, dar nu conţine destule informaţii de tip metadata pentru jurnalizare, ceea ce înseamnă că verificările de rutină ale sistemului de fişiere ext2 la pornirea sistemului pot dura o perioada considerabilă de timp. Există acum o mulţime de sisteme de fişiere jurnalizate din noua generaţie ce pot fi verificate pentru consistenţă foarte repede şi sunt, de aceea, preferate celor corespondente nejurnalizate. Sistemele de fişiere jurnalizate previn durata lungă la pornirea sistemului când sistemul de fişiere este într-o stare de inconsitenţă.

ext3 este versiunea jurnalizată a sistemului de fişiere ext2, oferind informaţii de jurnalizare de tip metadata pentru recuperări rapide în plus faţă de alte moduri de îmbunătăţire ca jurnalizarea completă a datelor şi jurnalizarea ordonată a datelor. ext3 este un sistem de fişiere foarte bun şi sigur. Conţine o indexare adiţională b-tree, opţiune de indexare ce oferă o performanţă bună în aproape toate situaţiile. Puteţi activa această indexare prin adăugarea opţiunii -O dir_index comenzii mke2fs. Pe scurt, ext3 este un sistem de fişiere excelent.

ReiserFS este un sistem de fişiere B*-tree ce oferă în general o performanţă foarte bună şi depăşeşte mult atât ext2 cât şi ext3 în cazul fişierelor mici (mai mici de 4K), în cele mai multe cazuri cu un coeficient de 10-15 ori. ReiserFS oferă o scalabilitate foarte bună şi conţine jurnalizare de tip metadata. Începând cu kernel 2.4.18+, ReiserFS este solid şi utilizabil atât în cazuri normale cât şi pentru cazuri extreme cum ar fi crearea de sisteme de fişiere foarte mari, utilizarea multor fişiere foarte mici, fişiere foarte mari şi directoare conţinând zeci de mii de fişiere.

XFS este un sistem de fişiere cu jurnalizare metadata ce are un set de funcţionalităţi robuste şi este optimizat pentru scalabilitate. Recomandăm utilizarea acestui sistem de fişiere doar pe sistemele Linux ce conţin discuri SCSI şi/sau sisteme de stocare pe fibra optică şi care deţin o sursă de alimentare neîntreruptibilă. Deoarece XFS utilizează într-un mod agresiv păstrarea datelor tranzitate în RAM, programele ce nu sunt proiectate corect (cele care nu îşi asigură precauţii la scrierea fişierelor pe disc care sunt destul de puţine) pot pierde multe date dacă sistemul se opreşte în mod neaşteptat.

JFS este sistemul de fişiere cu jurnalizare de înaltă performanţă al IBM. A devenit gata pentru producţie şi nu există prea multe înregistrări pentru a comenta pozitiv sau negativ asupra stabilităţii generale a acestuia în acest moment.

Aplicarea unui Sistem de Fişiere pe o Partiţie

Pentru a crea un sistem de fişiere pe o partiţie sau volum, există utilitare disponibile pentru fiecare sistem de fişiere posibil:

Sistem de Fişiere Comanda pentru Creare
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Spre exemplu, pentru a avea partiţia de boot (/dev/sda1 în exemplul nostru) ca ext2 şi partiţia rădăcină (/dev/sda3 în exemplul nostru) ca ext3 (ca în exemplul nostru), ar trebui să utilizaţi:

Cod 4.1: Aplicarea unui sistem de fişiere pe o partiţie

# mke2fs /dev/sda1
# mke2fs -j /dev/sda3

Acum creaţi sistemele de fişiere pe partiţiile (sau volumele logice) nou create.

Atenţie: Dacă instalaţi pe un server Cobalt, amintiţi-vă faptul că /dev/hda1 TREBUIE să fie de tipul EXT2 revision 0; Orice altceva (spre ex. EXT2 revision 1, EXT3, ReiserFS, XFS, JFS sau altele) NU VOR FUNCŢIONA! Puteţi formata partiţia utilizând comanda : mke2fs -r 0 /dev/hda1.

Atenţie: De asemenea, trebuie să ştiţi faptul că momentan arcboot nu poate citi de pe nici un alt sistem de fişiere în afară de EXT2, EXT3 şi ISO9660 (versiunile recente). Din acest motiv, /boot pe maşinile SGI trebuie, de asemenea, să fie stocat pe o partiţie EXT2 sau EXT3.

Activarea Partiţiei Swap

mkswap este comanda utilizată pentru a crea şi iniţializa partiţiile swap:

Cod 4.2: Crearea unei semnături Swap

# mkswap /dev/sda2

Pentru a activa partiţia swap, utilizaţi swapon:

Cod 4.3: Activarea partiţiei swap

# swapon /dev/sda2

Creaţi şi activaţi partiţia swap utilizând comenzile menţionate anterior.

4.e. Mount-area

Acum ca partiţiile dvs. sunt iniţializate şi găzduiesc un sistem de fişiere, este timpul să mount-aţi aceste partiţii. Utilizaţi comanda mount. Nu uitaţi să creaţi directoarele de mount pentru fiecare partiţie creată. Ca un exemplu, vom mount-a partiţiile rădăcină şi de boot:

Cod 5.1: Mount-area partiţiilor

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

Notă: Dacă doriţi ca directorul /tmp să se afle pe o partiţie separată, asiguraţi-vă că îi schimbaţi permisiunile după mount-are: chmod 1777 /mnt/gentoo/tmp. Aceasta este valabil şi pentru /var/tmp.

Trebuie, de asemenea, să utilizăm mount pentru sistemul de fişiere proc (o interfaţă virtuală cu kernel-ul) în /proc. Dar, mai întâi va trebui să stocăm fişierele noastre pe partiţii.

Continuaţi cu Instalarea Fişierelor de Instalare Gentoo.

5. Instalarea Fişierelor Gentoo necesare Instalării

5.a. Instalarea Unei Arhive Tar Stage

Setarea Corectă a Datei/Orei

Înainte de a continua, trebuie să verificaţi data/ora dvs. şi să o actualizaţi. Un ceas configurat greşit, poate duce la rezultate bizare, în viitor!

Pentru a verifica data/ora curentă, rulaţi date:

Cod 1.1: Verificarea datei/orei

# date
Fri Mar 29 16:21:18 UTC 2005

Dacă data/ora sunt afişate greşit, actualizaţi-le folosind sintaxa date MMDDhhmmYYYY (Month - Lună, Day - Zi, hour - Oră, minute - Minut şi Year - An). La acest pas, trebuie să utilizaţi zona de fus orar UTC. Veţi putea să vă definiţi zona de fus orar, ulterior. De exemplu, pentru a seta data de 29 Martie, 16:21, a anului 2005:

Cod 1.2: Setarea datei/orei UTC

# date 032916212005

Alegerea

Următorul pas pe care trebuie să-l efectuaţi este să instalaţi arhiva tar stage aleasă de dvs. în sistem.

5.b. Utilizarea Unei Arhive Stage de pe Internet

Descărcarea Arhivei Tar Stage

Navigaţi în directorul de mount al Gentoo în care aţi mount-at sistemele de fişiere (cel mai probabil /gentoo):

Cod 2.1: Navigarea în directorul de mount Gentoo

# cd /gentoo

Tabelul de mai jos specifică exact ce fişiere stage aveţi nevoie pentru sistemul dvs. Fişierele stage pot fi descărcate de pe server-ele mirror oficiale Gentoo din directorul releases/mips/current.

Endianness Procesor Locaţie
Big Endian
(Utilizatorii SGI)
R4000
R4400
R4600
mips3/stage#-mips3-RELEASE.tar.bz2
Big Endian
(Utilizatorii SGI)
R5000
RM5200
RM7000
R10000
R12000
R14000
mips4/stage#-mips4-RELEASE.tar.bz2
Little Endian
(Utilizatorii Cobalt)
RM5230
RM5231
cobalt/stage#-mipsel4-RELEASE.tar.bz2

Dacă trebuie să ieşiţi printr-un server proxy, exportaţi variabilele http_proxy şi ftp_proxy:

Cod 2.2: Setarea informaţiilor despre proxy pentru wget

# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"

Imaginile de boot prin reţea Gentoo/MIPS oferă wget ca o necesitate pentru descărcarea fişierelor. Din cauza constrângerilor legate de spaţiu, nu este există posibilitatea de a oferi un browser mai capabil pe imaginile de boot prin reţea SGI. Utilizatorii pot utiliza elinks.

Cod 2.3: Descărcarea unei arhive tar prin intermediul wget

# wget -c http://distfiles.gentoo.org/releases/mips/mips4/stage3-mips4-2006.0.tar.bz2

Dacă doriti să verificaţi integritatea arhivei tar stage descărcată, utilizaţi md5sum şi comparaţi textul afişat cu suma de control MD5 oferită pe mirror. Spre exemplu, pentru a verifica validitatea unei arhive tar stage mips4:

Cod 2.4: Examplu de verificare a integrităţii unei arhive stage tar

# md5sum -c stage3-mips4-2006.0.tar.bz2.md5
stage3-mips4-2006.0.tar.bz2: OK

Despachetarea Unei Arhive Stage

Acum, despachetaţi arhiva stage descărcată pe sistemul dvs. Noi utilizăm utilitarul GNU tar pentru a efectua această operaţie, deoarece este cea mai uşoară metodă:

Cod 2.5: Despachetarea arhivei stage

# tar -xjpf stage?-*.tar.bz2

Asiguraţi-vă că utilizaţi aceleaşi opţiuni (-xjpf). Opţiunea x este de la Extragere, opţiunea j este pentru Decompresie cu bzip2, p pentru Păstrarea permisiunilor şi f pentru a denota faptul că vrem să extragem un fişier, nu intrarea standard.

Acum, că arhiva stage este instalată, continuaţi cu Instalarea Portage.

5.c. Instalarea Portage

Despachetarea Unei Versiuni Snapshot a Portage

Acum, trebuie să instalaţi o versiune snapshot a Portage, o colecţie de fişiere ce informează Portage, ce titluri de aplicaţii să instaleze, ce profile sunt disponibile, etc.

Descărcarea şi Instalarea Unei Versiuni Snapshot a Portage

Navigaţi în directorul de mount al sistemului dvs. de fişiere (cel mai probabil /gentoo):

Cod 3.1: Navigarea în directorul de mount al Gentoo

# cd /gentoo

Descărcaţi o versiune snapshot de la un server mirror local. Le veţi găsi în directorul snapshots/. Transferaţi-o în sistemul ţintă în acelaşi mod ca şi cu arhiva stage.

Cod 3.2: Extragerea versiunii snapshot a Portage

# tar -xjf portage-*.tar.bz2 -C /gentoo/usr

5.d. Configurarea Opţiunilor de Compilare

Introducere

Pentru a optimiza Gentoo, puteţi seta unele variabile ce au impact asupra comportamentului Portage. Toate aceste variabile pot fi setate ca variabile de mediu (utilizând export) dar în acest mod nu sunt permanente. Pentru a vă păstra setările, Portage oferă fişierul /etc/make.conf, un fişier de configurare pentru Portage. Acesta este fişierul pe care-l vom edita acum.

Notă: O listă comentată cu toate variantele posibile poate fi regăsită în /gentoo/etc/make.conf.example. Pentru o instalare Gentoo încheiată cu succes, va trebui să setaţi variabilele ce sunt menţionate mai jos.

Rulaţi un editor de texte pentru a putea modifica variabilele de optimizare pe care le vom discuta imediat. Două editoare vă sunt oferite, vi (parte din Busybox) şi nano. Vom presupune că utilizaţi nano.

Cod 4.1: Deschiderea fişierului /etc/make.conf

# nano -w /gentoo/etc/make.conf

Aşa cum, probabil, aţi observat, fişierul make.conf.example este structurat într-un mod generic: liniile comentate încep cu "#", alte linii definesc variabilele utilizând sintaxa VARIABILĂ="conţinut". Fişierul make.conf utilizează aceeaşi sintaxă. Unele din aceste variabile sunt tratate în cele ce urmează.

CFLAGS şi CXXFLAGS

Variabilele CFLAGS şi CXXFLAGS definesc opţiunile de optimizare pentru compilatoarele gcc C, respectiv C++. Deşi le definim aici în mod generic, veţi obţine performanţe maxime dacă optimizaţi aceste opţiuni pentru fiecare program în parte. Motivul este faptul că fiecare program este diferit.

În make.conf ar trebui să definiţi opţiunile de optimizare ce credeţi că vă vor face sistemul cel mai responsiv, în general. Nu puneţi setări experimentale în această variabilă; prea multe optimizări pot face ca programele să se comporte incorect (să returneze eroare sau, mai rău, să funcţioneze incorect).

Nu vă vom explica toate opţiunile de optimizare posibile. Dacă doriţi să le ştiţi pe toate, consultaţi Manualele Online GNU sau pagina info a gcc (info gcc -- funcţionează doar într-un sistem Linux funcţional). Însuşi fişierul make.conf.example conţine, de asemenea, multe exemple şi informaţii; nu uitaţi să-l consultaţi şi pe acesta.

O primă setare este opţiunea -march=, care specifică numele arhitecturii ţintă. Opţiunile posibile sunt descrise în fişierul make.conf.example (sub formă de comentarii). Exemplele includ nivelele (mips1 ... mips4) şi modelele de procesoare (r4400, r4600 ... etc). Pentru arhitecturile de nivel ISA, se poate specifica -mips3, în locul -march=mips3.

Cod 4.2: The GCC -march and -mips# settings

(Pentru un sistem R4600...)
-march=r4600

(Orice procesor din clasa MIPS4...)
-march=mips4

(Sau specificaţi direct nivelul ISA...)
-mips4

Un al doilea parametru este opţiunea -O (este majuscula O, nu un zero), ce specifică clasa de optimizare gcc. Clasele posibile sunt s (optimizat pentru mărime), 0 (zero - pentru nici o optimizare), 1, 2 sau 3 pentru mai multă optimizare la viteză (fiecare are are aceleaşi opţiune ca cea dinainte, plus unele în plus). Spre exemplu, pentru o optimizare de clasă 2:

Cod 4.3: Setarea O pentru GCC

-O2

O setare foarte importantă în lumea MIPS este indicatorul -mabi=. MIPS are 3 interfeţe binare ale aplicaţiilor (ABI); 32 (pe 32 de biţi pur, cunoscut şi sub numele de o32), 64 (suport total pentru 64 de biţi, cunoscut şi sub numele de n64) şi n32 (un amestec de structuri de date pe 32 de biţi cu instrucţiuni pe 64 de biţi). Acest parametru selectează pe care dintre acestea să le utilzaţi. Notaţi faptul că aveţi nevoie de biblioteci pentru interfaţa binară selectată. În termeni expliciţi, aceasta înseamnă că, spre exemplu, nu puteţi utiliza -mabi=64 într-un mediu utilizator pe 32 de biţi (sau chiar într-un mediu utilizator n32).

Un alt parametru de optimizare popular, este -pipe (utilizează pipe - eng: pipes - în locul fişierelor temporare pentru comunicaţia dintre diverse stadii ale compilării).

Reţineţi că utilizarea -fomit-frame-pointer (ce nu păstrează referinţa zonei într-o înregistrare pentru funcţiile care nu a nevoie de o asemenea referinţă) poate avea repercursiuni serioare în depanarea aplicaţiilor!

Când definiţi CFLAGS şi CXXFLAGS, ar trebui să combinaţi mai multe opţiuni de optimizare, ca în următorul exemplu:

Cod 4.4: Definirea variabilelor CFLAGS şi CXXFLAGS

CFLAGS="-mabi=32 -mips4 -pipe -O2"
CXXFLAGS="${CFLAGS}"                  # Utilizaţi aceleaşi setări pentru ambele variabile

MAKEOPTS

Cu ajutorul MAKEOPTS definiţi câte compilări paralele ar trebui să se proceseze când instalaţi un pachet. O alegere bună este numărul procesoarelor din sistemul dvs. plus încă unul, însă acest sfat nu este întotdeauna perfect.

Cod 4.5: MAKEOPTS pentru un sistem normal cu 1 procesor

MAKEOPTS="-j2"

Pe Locuri, Fiţi Gata, Porniţi!

Actualizaţi-vă fişierul /gentoo/etc/make.conf în concordanţă cu preferinţele proprii şi salvaţi-l (utilizatorii nano ar trebui să apese Ctrl-X). Sunteţi acum gata să continuaţi cu Instalarea Sistemului de Bază Gentoo.

6. Instalarea Sistemului de Bază al Gentoo

6.a. Utilizarea mediului Chroot

Opţional: Alegerea Mirror-urilor

Pentru a descărca sursele mai rapid, este recomandat să selectaţi un server mirror rapid. Portage va căuta în fişierul dvs. make.conf definiţia variabilei GENTOO_MIRRORS şi va utiliza server-ele mirror afişate acolo. Puteţi naviga în documentul nostru ce conţine lista cu servere mirror şi va căuta un server mirror (sau mai multe) mai apropiate de dvs. (deoarece, în cele mai multe cazuri, acestea sunt şi cele mai rapide), sau puteţi utiliza utilitarul mirrorselect oferit de noi, cu care puteţi printr-o interfaţă prietenoasă, să selectaţi server-ele mirror pe care le doriţi.

Cod 1.1: Utilizarea mirrorselect pentru variabila GENTOO_MIRRORS

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

Atenţie: Nu selectaţi nici un server mirror IPv6. Arhivele noastre stage nu suportă IPv6.

O altă setare importantă este variabila SYNC din make.conf. Această variabilă conţine server-ul rsync pe care doriţi să-l utilizaţi când vă actualizaţi structura Portage (colecţia de fişiere ebuild, script-urile ce conţin toate informaţiile de care Portage are nevoie pentru a descărca şi a instala aplicaţiile). Deşi puteţi introduce manual un server SYNC, mirrorselect vă poate uşura această operaţie:

Cod 1.2: Selectarea unui server mirror rsync utilizând mirrorselect

# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

După rularea mirrorselect este recomandat să verificaţi încă o dată setările din /mnt/gentoo/etc/make.conf !

Precizarea Informaţiilor despre DNS

A rămas un singur lucru de făcut, înainte să putem intra noul mediu şi anume trebuie să copiem informaţiile despre DNS în /etc/resolv.conf. Trebuie să facem asta, pentru a fi siguri că reţeaua funcţionează, chiar şi după ce intrăm în noul mediu. /etc/resolv.conf conţine serverele DNS pentru reţeaua noastră.

Cod 1.3: Copierea informaţiilor despre DNS

(Opţiunea "-L" ne asigură că nu copiem un link simbolic)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Mount-area Sistemelor de Fişiere /proc şi /dev

Mount-aţi sistemul de fişiere /proc în /mnt/gentoo/proc pentru a permite instalării să utilizeze informaţia oferită de kernel, chiar şi în mediul chroot, şi apoi mount-aţi prin legătură sistemul de fişiere /dev.

Cod 1.4: Mount-area /proc şi /dev

# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

Intrarea în noul Mediu

Acum, că toate partiţiile sunt iniţializate şi mediul de bază instalat, a venit momentul să intrăm în noul mediu prin acţiunea de chrooting în acesta. Aceasta înseamnă că ne mutăm din mediul în care a decurs instalarea (Installation CD sau alt mediu de instalare), în sistemul instalat (adică în partiţia iniţializată)

Acţiunea de chrooting, se face în trei etape. Mai întâi, vom muta rădăcina, din / (de pe discul de instalare), către /mnt/gentoo (de pe partiţia aleasa pentru instalare), folosind comanda chroot. Apoi, vom creea un nou mediu, folosind comanda env-update, care, în esenţă, creează variabile ale mediului. În final, încărcăm aceste variabile în memorie, folosind comanda source.

Cod 1.5: Chroot în noul mediu

# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"

Felicitări! Sunteţi acum în propriul mediu Gentoo Linux. Desigur, suntem departe de a fi terminat, motiv pentru care procesul de instalare mai are câteva secţiuni de parcurs :-)

6.b. Configurarea Portage

Actualizarea Structurii Portage

Acum, trebuie să vă actualizaţi structura Portage la ultima versiune. emerge --sync efectuează această acţiune pentru dvs.

Cod 2.1: Actualizarea structurii Portage

# emerge --sync
(Dacă utilizaţi un terminal lent, cum ar fi unele terminale framebuffer sau
console seriale, puteţi adăuga opţiunea --quiet pentru a mări viteza acestui proces:)
# emerge --sync --quiet

Dacă vă aflaţi în spatele unui firewall ce blochează traficul rsync, puteţi utiliza emerge-webrsync ce va descărca şi instala o versiune snapshot de portage pentru dvs.

Dacă sunteţi anunţat că o versiune mai nouă a Portage este disponibilă şi că ar trebui să o actualizaţi, puteţi, fără grijă, să ignoraţi acest mesaj. Portage va fi actualizat pentru dumneavoastră, mai târziu, pe parcursul instalării.

Alegerea Profilului Corect

Mai întâi, are loc o mică definiţie.

Un profil este un bloc ce stă la baza construirii oricărui sistem Gentoo. Nu numai că specifică valorile implicite pentru CHOST, CFLAGS şi alte variabile importante, dar şi blochează sistemul într-o anumită plajă de versiuni ale pachetelor. Mentenanţa tuturor acestora este asigurată de dezvoltatorii Gentoo.

Anterior, un asemenea profil, abia era atins de către utilizator. În schimb, utilizatorii x86, hppa şi alpha pot alege între profile, unul pentru versiunea de kernel 2.4 şi celălalt pentru versiunea 2.6. Această cerinţă a fost impusă pentru a îmbunătăţi integrarea versiunilor de kernel 2.6. Arhitecturile ppc şi ppc64 au, de asemenea, mai multe profile disponibile. Vom discuta despre acestea, ulterior.

Puteţi vedea ce profil utilizaţi în mod curent, prin execuţia următoarei comenzi:

Cod 2.2: Verificarea profilului de sistem

# ls -FGg /etc/make.profile
lrwxrwxrwx  1 48 Apr  8 18:51 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2006.0/

Dacă utilizaţi una din arhitecturile menţionate anterior, profilul implicit vă va oferi un sistem bazat pe Linux 2.6. Acesta este cel implicit recomandat, dar aveţi la dispoziţie opţiunea de a alege un alt profil, de asemenea.

Unii utilizatori pot să dorească instalarea unui sistem bazat pe un profil mai vechi de Linux 2.4. Dacă aveţi un motiv întemeiat pentru acest lucru, atunci ar trebui, mai întâi să verificaţi că un profil suplimentar există. Pe x86 putem face acest lucru cu următoarea comandă:

Cod 2.3: Găsirea existenţei unui profil adiţional

# ls -d /usr/portage/profiles/default-linux/x86/no-nptl/2.4
/usr/portage/profiles/default-linux/x86/no-nptl/2.4

Exemplul anterior indică faptul că un profil suplimentar 2.4 există (spre ex. nu a fost returnată nici o eroare despre lipsa unui fişier sau director). Este recomandat să rămâneţi pe kernel-ul implicit, dar în cazul în care doriţi să comutaţi, puteţi face acest lucru în modul următor:

Cod 2.4: Comutarea la un profil 2.4

(Asiguraţi-vă că utilizaţi arhitectura corectă, exemplul de mai jos fiind pentru x86)
# ln -snf /usr/portage/profiles/default-linux/x86/no-nptl/2.4 /etc/make.profile
(Afişaţi lista cu fişierele din profilul 2.4)
# ls -FGg /etc/make.profile/
total 12
-rw-r--r--  1 939 Dec 10 14:06 packages
-rw-r--r--  1 347 Dec  3  2004 parent
-rw-r--r--  1 573 Dec  3  2004 virtuals

Pentru arhitectura ppc, există un număr de profile noi oferite cu 2006.0.

Cod 2.5: Profile PPC

(Profil PPC generic, pentru toate maşinile PPC)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0 /etc/make.profile
(Profil pentru G3)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3 /etc/make.profile
(Profil pentru G3 Pegasos)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3/Pegasos/ /etc/make.profile
(Profil pentru G4 (Altivec))
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4 /etc/make.profile
(Profile pentru G4 Pegasos)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4/Pegasos/ /etc/make.profile

Pentru arhitectura ppc64, există un număr de profile noi, oferite cu 2005.1.

Cod 2.6: Profile PPC64

(Profil PPC64 generic pentru mediu pe 64 de biţi, pentru toate maşinile PPC64)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/64bit-userland /etc/make.profile
(Profil PPC64 generic pentru mediu pe 32 de biţi, pentru toate maşinile PPC64)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/32bit-userland /etc/make.profile
(Fiecare tip de mediu are subprofile, după cum urmează, unde (userland) se înlocuieşte cu mediul ales de mai sus)
(Profil 970 pentru JS20)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/970 /etc/make.profile
(Profil G5)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/970/pmac /etc/make.profile
(Profil POWER3)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power3 /etc/make.profile
(Profil POWER4)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power4 /etc/make.profile
(Profil POWER5)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power5 /etc/make.profile
(Profilul multilib nu este stabil, în această versiune.)

Configurarea variabilei USE

USE este una dintre cele mai puternice variabile, pe care Gentoo o pune la dispoziţia utilizatorilor. Multe dintre programe pot fi compilate, cu sau fără suport opţional pentru diferite pachete. De exemplu, unele programe pot fi compilate cu suport gtk sau cu suport qt. Altele pot fi compilate cu sau fără suport SSL. Unele programe pot fi chiar compilate cu suport framebuffer (svgalib), în loc de suport X11 (X-server).

Majoritatea distribuţiilor îşi compilează propriile pachete, folosind suport pentru cât mai multe lucruri posibile, crescând astfel dimensiunea programelor şi totodată a timpului de pornire, fără a menţiona enorma cantitate de dependenţe. Folosind Gentoo, puteţi defini cu ce opţiuni să fie compilat un pachet. Aici intră în joc, variabila USE

În cadrul variabilei USE, definiţi cuvinte cheie care sunt folosite în opţiunile compilării. De exemplu, opţiunea ssl va compila suportul pentru ssl, în cadrul programelor care îl suportă. -X va elimina suportul pentru X-server (observaţi semnul minus din faţă). gnome gtk -kde -qt va compila programele cu suport gnome (gtk) dar fără suport kde (şi qt), făcându-vă sistemul, pe deplin optimizat pentru GNOME.

Setările USE implicite se află în fişierele make.defaults din profilul dvs. Veţi putea regăsi fişierele make.defaults în directorul spre care indică /etc/make.profile şi în toate directoarele ascendente. Setarea USE reprezintă suma tuturor setărilor USE din toate fişierele make.defaults. Setările USE implicite, se află în fişierele /etc/make.profile/make.defaults. Ceea ce adăugaţi în /etc/make.conf este calculat în concordanţă cu aceste setări implicite. Dacă adăugaţi ceva setărilor USE, este adăugat listei implicite. Dacă ştergeţi ceva din setările USE (prin scrierea semnului minus în faţa sa), atunci este şters din lista implicită (în cazul în care ar fi fost în listă). Niciodată nu faceţi schimbări în interiorul directorului /etc/make.profile; va fi rescris când actualizaţi Portage!

O descriere completă, a variabilei USE, poate fi găsită în cea de a doua parte a Gentoo Handbook, Indicatori USE. O descriere completă a variabilelor USE existente, poate fi găsită în /usr/portage/profiles/use.desc.

Cod 2.7: Vizualizarea indicatorilor USE existenţi

# less /usr/portage/profiles/use.desc
(Puteţi derula utilizând tastele săgeţi şi să ieşiţi prin apăsarea 'q')

Drept exemplu, vă prezentăm setările unui sistem bazat pe KDE, cu suport DVD, ALSA şi CD-Recording.

Cod 2.8: Deschidem /etc/make.conf

# nano -w /etc/make.conf

Cod 2.9: Setările USE

USE="-gtk -gnome qt kde dvd alsa cdr"

Opţional: Localizările GLIBC

Probabil că veţi utiliza una sau poate două localizări pe sistemul dvs. Până acum, după compilarea glibc un set complet de localizări este creat. Începând de acum, activaţi indicatorul USE userlocales şi specificaţi doar localizările necesare în /etc/locales.build. Această acţiune trebuie efectuată doar în cazul în care cunoaşteţi ce localizări să utilizaţi.

Cod 2.10: Activaţi indicatorul USE userlocales special pentru glibc

# mkdir -p /etc/portage
# echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

Acum specificaţi ce localizări doriţi să utilizaţi:

Cod 2.11: Deschiderea /etc/locales.build

# nano -w /etc/locales.build

Următoarele localizări sunt un exemplu de a activa atât limba engleză (Statele Unite) cât şi limba germană (Germania) cu formatele de caractere specifice (cum ar fi UTF-8).

Cod 2.12: Specificarea localizărilor dvs.

en_US/ISO-8859-1
en_US.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15

Acum, continuaţi cu Configurarea Kernel-ului.

7. Configurarea Kernel-ului

7.a. Zona de fus orar

Trebuie, mai întâi să setaţi fusul orar, astfel încât sistemul dumneavoastră să ştie unde se află. Uitaţi-vă după fusul orar potrivit în /usr/share/zoneinfo, apoi copiaţi-l ca /etc/localtime. Vă rugăm să evitaţi zonele de fus din /usr/share/zoneinfo/Etc/GMT* deoarece numele acestora nu indică zonele presupuse. Spre exemplu GMT-8 este, de fapt, GMT+8.

Cod 1.1: Setarea informaţiilor referitoare la fusul orar

(Presupunănd că doriţi să utilizaţi ora Bucureştiului)
# cp /usr/share/zoneinfo/Europe/Bucharest /etc/localtime

7.b. Instalarea surselor

Alegerea unui kernel

Nucleul în jurul căruia sunt construite toate distribuţiile, este kernel-ul Linux. Este nivelul dintre programe şi componentele hardware ale sistemului dumneavoastră. Gentoo pune la dispoziţia utilizatorilor, mai multe surse de kernel. O listă completă alături de descrierea lor, este accesibilă la Ghidul Gentoo pentru Kernel.

Sistemele bazate pe MIPS pot alege mips-sources. Patch-uri speciale sunt necesare pentru a face unele sisteme să funcţioneze. Tabelul de mai jos afişează indicatorii USE necesari pentru a activa aceste seturi de patch-uri. Notaţi faptul că sistemele Indy, Indigo2 (R4k) şi Challenge S nu necesită nici un set de patch-uri adiţional.

Indicator USE Sistem
cobalt suport pentru Cobalt Qube/RaQ
ip27 suport pentru SGI Origin 200/2000 (1)
ip28 suport pentru SGI Indigo2 Impact (R10000) (1,2)
ip30 suport pentru SGI Octane/Octane2 (1)

Notă: Utilizarea USE="-doc" dezactivează generarea documentaţiei de API din kernel, ce ar implica dependenţe numeroase ce nu sunt necesare pentru acest pas.

Notă: Sunt necesare patch-uri speciale pentru a face un kernel funcţional pe server-ele Cobalt. Indicatorul USE cobalt trebuie definit, pentru a se putea descărca fişierele patch necesare şi a le putea aplica.

Cod 2.1: Setarea indicatorilor USE şi instalarea surselor de kernel...

(Înlocuiţi cobalt cu indicatorul USE corespunzător sistemului dvs., dacă este necesar)
# mkdir /etc/portage
# echo "sys-kernel/mips-sources cobalt" >> /etc/portage/package.use

(Despachetaţi şi instalaţi sursele de kernel)
# USE="-doc" emerge mips-sources

Important: (1) Pe sistemele Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 şi O2, este necesar un kernel pe 64 de biţi pentru a boota. Pentru aceste maşini, ar trebui să comutaţi la profilul default-linux/mips/mips64/RELEASE prin modificarea link-ului simbolic /etc/make.profile. Apoi executaţi comanda emerge gcc-mips64 pentru a crea un compilator pentru crearea imaginilor de kernel pe 64 de biţi.

Important: (2) Sistemul Indigo2 Impact este un caz special ce necesită un patch special de aplicat pentru gcc înainte de a compila corect un kernel IP28. Acest patch adaugă suport pentru opţiunea CFLAG -mip28-cache-barriers ce este utilizată în momentul în care se creează imagini de kernel ce funcţionează cu problema hardware inerentă cauzată de execuţia speculativă. Acest indicator USE poate fi setat în /etc/make.conf. Aceasta se poate face prin setarea profilului dvs. la default-linux/mips/mips64/ip28/RELEASE, ce implică punctul (1).

Cod 2.2: Modificarea profilelor şi instalarea gcc-mips64...

(Aceasta presupune că PORTDIR este în locaţia normală; /usr/portage)
# rm /etc/make.profile
# ln -s /usr/portage/profiles/default-linux/mips/mips64/2005.0 (sau .../mips64/ip28/2005.0)

(Instalaţi componentele toolchain pentru kernel-ul pe 64 de biţi)
# emerge gcc-mips64

Când vă veţi uita în /usr/src ar trebui să vedeţi un symlink numit linux, ce indică spre sursa kernel-ului dvs. În acest caz, sursele de kernel instalate indică către mips-sources-2.4.24. Versiunea dvs. ar putea fi diferită, deci reţineţi acest aspect.

Cod 2.3: Vizualizare symlink sursă kernel

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.6.13.4

Dacă nu este acesta cazul dvs. (spre ex. link-ul simbolic indică spre o altă sursă de kernel) modificaţi link-ul simbolic înainte de a continua:

Cod 2.4: Modificarea link-ului simbolic către sursele de kernel

# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.6.13.4 linux

Acum este timpul pentru a configura şi a compila sursa kernel-ului.

7.c. Compilarea şi Instalarea Imaginii de Kernel

Introducere

Anterior, am tratat configurarea manuală despre cum să instalaţi sursele de kernel. Aceasta a devenit nepractică cu numarul de sisteme suportate acum. Această secţiune detaliază diversele surse de kernel pentru exemple de configuraţii de kernel.

Utilizarea exemplelor de configurare din kernel

Multe din sistemele suportate au un exemplu de fişier .config ascuns în sursa de kernel. Nu toate sistemel au fişiere de configurare distribuite aşa. Cele care au, pot fi configurate utilizând comenzile menţionate în tabelul de mai jos.

Sistem Comanda de configurare
Servere Cobalt make cobalt_defconfig
Indy, Indigo2 (R4k), Challenge S make ip22_defconfig
Origin 200/2000 make ip27_defconfig
Indigo2 Impact (R10k) make ip28_defconfig (necesită mips-sources-2.6.14.5 sau ulterior)
O2 make ip32_defconfig

Utilizarea configuraţiei din kernel-ul încărcat de pe mediul de instalare

Toate imaginile de instalare Gentoo oferă o opţiune de configurare de kernel ca parte componentă a insăşi imaginii, accesibile prin intermediul /proc/config.gz. Aceasta poate fi utilizată în multe cazuri. Cel mai bine, totuşi, este ca sursa dvs. de kernel să fie apropiat cu kernel-ul care rulează curent. Pentru a o extrage, trebuie doar să îl rulaţi prin zcat aşa cum este arătat mai jos.

Cod 3.1: Extrgerea .config din /proc/config.gz

# zcat /proc/config.gz > .config

Important: Această configurare de kernel este setată pentru o imagine de boot prin reţea. Adică, se va aştepta să găsească o imagine cu un sistem de fişiere rădăcină, fie ca un director din initramfs sau un dispozitiv loop pentru initrd. Când rulaţi make menuconfig mai jos, nu uitaţi să navigaţi în meniul General Setup şi să dezactivaţi opţiunile pentru initramfs.

Baza de Date de Compatibilitate Hardware

Ca un ajutor utilizatorilor în a găsi setări funcţionale, o bază de date de compatibilitate hardware a fost setată. Această bază de date afişează suportul pentru diverse dispozitive MIPS şi permite utilizatorilor să contribuie cu configuraţii de kernel ce sunt cunoscute ca funcţionale. Adresa acestui sit este http://stuartl.longlandclan.hopto.org/gentoo/mips.

Dacă găsiţi acest serviciu util, sunteţi bineveniţi să contribuiţi cu note şi fişiere .config pentru ca şi alţii să beneficieze din experienţa dvs. Ar trebui amintit, totuşi, că nu este nici o garanţie că oricare din fişierele de configurare descărcate de pe acest site vor funcţiona.

Personalizarea configuraţiei în concordanţă cu necesităţile dvs.

După ce aţi găsit o configuraţie, descărcaţi-o în directorul sursei de kernel şi redenumiţi-o ca .config. De acolo, puteţi rula make oldconfig pentru a vă actualiza restul de opţiuni, şi să va permită personalizarea configuraţiei înainte de compilare.

Cod 3.2: Configurarea kernel-ului

# cd /usr/src/linux
# cp /path/to/examplu-config .config
# make oldconfig
(Doar apăsaţi ENTER pentru fiecare prompt pentru a accepta valorile implicite... vom personaliza ulterior)
# make menuconfig

Important: În secţiunea Kernel Hacking există o opţiune denumită "Are You Using A Cross Compiler?". Aceasta specifică fişierelor Makefile din kernel să adauge "mips-linux-" (sau mipsel-linux ... etc) liniilor de comandă gcc şi as când compilează kernel-ul. Aceasta ar trebui dezactivată, chiar şi în cazul compilării distribuite. În loc, dacă aveţi nevoie să utilizaţi un compilator distribuit, specificaţi prefixul utilizând variabila CROSS_COMPILE aşa cum este specificat în următoarea secţiune.

Compilare şi Instalare

Acum, că kernel-ul este configurat, este timpul să îl compilaţi şi să-l instalaţi. Ieşiţi din meniul de configurare şi să începeţi procesul de compilare:

Notă: Pe maşinile pe 64 de biţi, trebuie să specificaţi CROSS_COMPILE=mips64-unknown-linux-gnu- (sau mips64el-... în cazul unui sistem little-endian) pentru a utiliza un compilator pe 64 de biţi.

Cod 3.3: Compilarea kernel-ului

(Doar în cazul unui kernel 2.4)
# make dep

(pentru versiuni 2.4 şi 2.6 de kernel -- compilarea nativă)
# make vmlinux modules modules_install

(pentru versiuni 2.4 şi 2.6 de kernel -- compilarea distribuită pe maşina ţintă)
(    Ajustaţi valoarea mips64-unknown-linux-gnu- corespunzător    )
# make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-

(Când compilaţi pe o altă maşină, ca în cazul uneia x86... utilizaţi )
(următoarele comenzi pentru a compila kernel-ul şi a instala modulele)
(  într-un anumit director pentru a fi transferate pe maşina ţintă.  )
# make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
# make modules_install INSTALL_MOD_PATH=/somewhere

Important: Când compilaţi un kernel pe 64 de biţi pentru Indy, Indigo2 (R4k), Challenge S şi O2, utilizaţi ţinta vmlinux.32 în loc de vmlinux. Altfel, maşina dvs. nu va putea să boot-eze. Aceasta este o ocolire a problemei că imaginea PROM nu poate interpreta codul ELF64.

Cod 3.4: Utilizarea ţintei vmlinux.32

# make vmlinux.32
(Aceasta va crea vmlinux.32 -- care este kernel-ul final)

Când compilarea de kernel este gata, copiaţi imaginea de kernel în directorul /boot.

Notă: Pe maşinile server Cobalt, aplicaţia bootloader va căuta o imagine de kernel compresată. Amintiţi-vă să compresaţi utilizând gzip -9 pentru fişier, odată aflat în /boot.

Cod 3.5: Instalare kernel

# cp vmlinux /boot/kernel-2.6.13.4
(Maşini Server Cobalt -- Compresarea imaginii de kernel)
# gzip -9v /boot/kernel-2.6.13.4

7.d. Instalarea de Module Separate de Kernel

Configurarea Modulelor

Va trebui să enumeraţi toate modulele, care vreţi să fie încărcate automat, într-unul din fişierele relevante de mai jos. Puteţi, de asemenea, să adăugaţi extra opţiuni modulelor dacă doriţi.

  • /etc/modules.autoload.d/kernel-2.4 - Doar kernel 2.4
  • /etc/modules.autoload.d/kernel-2.6 - Doar kernel 2.6
  • /etc/modules.autoload - Toate versiunile de kernel

Deci, dacă aveţi un modul pe care doriţi să-l încărcaţi -- ceea ce este o practică destul de comună, atât pentru versiunea de kernel 2.4 cât şi pentru 2.6, atunci plasaţi-l în /etc/modules.autoload. Altfel, acesta poate fi stocat în fişierul corespunzător.

Pentru a vizualiza toate modulele disponibile, folosiţi următoarea comandă find. Nu uitaţi să înlocuiţi "<versiune kernel>" cu versiunea efectivă de kernel pe care tocmai aţi compilat-o:

Cod 4.1: Vizualizarea tuturor modulelor disponibile

# find /lib/modules/<versiune kernel>/ -type f -iname '*.o' -or -iname '*.ko'

De exemplu, pentru a încărca automat modulul 3c59x, editaţi fişierul corespunzător şi scrieţi numele modulului în el.

Cod 4.2: Editarea /etc/modules.autoload.d/kernel-2.4

# nano -w /etc/modules.autoload.d/kernel-2.4

Cod 4.3: /etc/modules.autoload.d/kernel-2.4 sau kernel-2.6

3c59x

Această operaţie poate fi efectuată într-un singur pas:

Cod 4.4: Adăugarea unui modul -- metoda pe o singură linie

# echo '3c59x' >> /etc/modules.autoload.d/kernel-2.4
(sau kernel-2.6, sau /etc/modules.autoload...)

Continuaţi instalarea cu Configurarea Sistemului.

8. Configurarea Sistemului

8.a. Informaţii despre Sistemul de Fişiere

Ce este fstab?

Sub Linux, toate partiţiile folosite de sistem trebuie scrise în /etc/fstab. Fişierul conţine punctele de mount-are a partiţiilor (unde apar în structura sistemului de fişiere), cum trebuie mountate şi cu ce opţiuni speciale (mount-are automată sau nu, dacă user-ii normali pot mounta sau nu partiţia, etc.).

Crearea /etc/fstab

/etc/fstab foloseşte o sintaxă specială. Fiecare linie conţine şase câmpuri, separate de spaţiu/spaţii, taburi, sau o combinaţie între cele două. Fiecare câmp îşi are propria semnificaţie:

  • Primul câmp prezintă partiţia respectivă (calea către fişierul dispozitiv)
  • Al doilea câmp arată directorul de mount-are, unde partiţia trebuie să fie mount-ată.
  • Al treilea câmp arată sistemul de fişiere folosit pe partiţie.
  • Al patrulea câmp arată opţiunile folosite la mount-area partiţiilor. Deoarece fiecare sistem de fişiere are opţiuni de mount-are specifice, sunteţi încurajaţi să citiţi manualul comenzii mount (man mount) pentru o listare completă. Punctele de mount-are separate sunt separate prin virgule.
  • Al cincilea câmp este folosit de dump entru a determina dacă pentru partiţia respectivă trebuie efectuat dump sau nu. În general, se poate lăsa valoarea standard 0 (zero).
  • Al şaselea câmp este utilizat de fsck pentru a determina ordinea în care sistemele de fişiere trebuie verificate, în cazul în care PC-ul nu a fost oprit în mod normal. Sistemul de fişiere root ar trebui să aibă valoarea 1, în timp ce restul partiţiilor ar trebui să aibă 2 (sau 0, dacă verificarea nu este necesară).

Fişierul /etc/fstab implicit prezent în Gentoo nu este un fişier valid, aşadar, porniţi nano (sau editorul favorit) pentru a crea /etc/fstab:

Cod 1.1: Deschiderea /etc/fstab

# nano -w /etc/fstab

Să vedem cum scriem opţiunile pentru partiţia /boot. Acesta este doar un exemplu, astfel, dacă arhitectura folosită nu necesită /boot (cum sunt maşinile PPC de la Apple), nu o copiaţi.

În exemplul nostru implicită pentru x86, /boot este partiţia /dev/hda1, cu ext2 ca sistem de fişiere. Trebuie verificat în timpul procesului de boot, aşadar vom scrie:

Cod 1.2: Un exemplu de linie /boot pentru /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

Unii utilizatori nu doresc ca partiţia lor /boot să fie mount-ată automat, pentru a imbunătăţi securitatea sistemului. Aceştia trebuie să înlocuiască defaults cu noauto. Aceasta înseamnă că trebuie să mount-aţi manual partiţia de câte ori doriţi să o folosiţi.

Acum, pentru a îmbunătăţi performanţa, cei mai mulţi utilizatori ar trebui să adauge opţiunea noatime, opţiune ce va duce la o mărire a vitezei sistemului, fiindcă timpii de acces nu sunt înregistraţi (în general nu sunt necesari)

Cod 1.3: O linie /boot optimizată din /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime    1 2

Dacă am continua, am ajunge să avem următoarele trei linii (pentru partiţiile /boot, / şi swap):

Cod 1.4: Trei linii /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime  1 2
/dev/hda2   none      swap    sw                0 0
/dev/hda3   /         ext3    noatime           0 1

Pentru a încheia, ar trebui adăugată o regulă pentru /proc, tmpfs (obligatoriu) şi pentru CD-ROM (bineînţeles, dacă aveţi alte partiţii sau drive-uri, adăugaţi-le):

Cod 1.5: Un exemplu final pentru /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime     1 2
/dev/hda2   none      swap    sw                   0 0
/dev/hda3   /         ext3    noatime              0 1

none        /proc     proc    defaults             0 0
none        /dev/shm  tmpfs   nodev,nosuid,noexec  0 0

/dev/cdroms/cdrom0    /mnt/cdrom    auto      noauto,user    0 0

Opţiunea auto face ca mount să ghicească ce sistem de fişiere este folosit (recomandat pentru componente detaşabile, deoarece ele pot avea o varietate de sisteme) iar opţiunea user oferă accesul la CD utilizatorilor non-root.

Acum, folosiţi exemplul de mai sus pentru a crea propriul /etc/fstab. Dacă sunteţi utilizator SPARC, ar trebui să adăugaţi şi linia următoare:

Cod 1.6: Adăugarea unui sistem de fişiere deschis pentru /etc/fstab

none        /proc/openprom  openpromfs    defaults      0 0

Verificaţi de două ori configuraţia /etc/fstab, salvaţi şi ieşiţi pentru a continua.

8.b. Informaţii reţea

Hostname, Domainname etc.

O decizie ce trebuie făcută de user este numele PC-ului. Aceasta pare a fi uşoară, dar mulţi utilizatori au dificultăţi alegând un nume potrivit pentru PC-ul cu Linux. Pentru a grăbi puţin lucrurile, trebuie să ştiţi că, orice nume alegeţi, acesta poate fi modificat ulterior. Puteţi pur şi simplu să vă numiţi sistemul tux şi domeniul homenetwork.

Folosim acestă denumire în exemplul următor. Mai întâi, setăm numele:

Cod 2.1: Setarea numelui

# nano -w /etc/conf.d/hostname

(Setaţi variabila HOSTNAME pentru numele sistemului)
HOSTNAME="tux"

Apoi, setăm numele domeniului:

Cod 2.2: Setarea numelui domeniului

# nano -w /etc/conf.d/domainname

(Setaţi variabila DNSDOMAIN cu numele domeniului dvs.)
DNSDOMAIN="homenetwork"

Dacă aveţi un domeniu NIS (dacă nu ştiţi ce este acesta, sigur nu utilizaţi aşa ceva), aveţi nevoie să-l definiţi şi pe acesta:

Cod 2.3: Setarea numelui de domeniu NIS

# nano -w /etc/conf.d/domainname

(Setaţi variabila NISDOMAIN cu numele domeniului NIS)
NISDOMAIN="my-nisdomain"

Configurarea reţelei

Înainte de a avea acea stare "Hei, am mai făcut asta o dată", trebuie să ştiţi că setările făcute la începutul instalării au fost DOAR pentru instalare. Acum, vom face configurările permanente pentru noul sistem Gentoo.

Notă: Informaţii mai detaliate despre reţea, incluzând subiecte avansate ca sistemele bonding, bridging, reţele VLAN 802.1Q sau reţelistica wireless, sunt incluse în secţiunea despre Configurarea Reţelei în Gentoo.

Toate setările reţelei sunt ţinute în /etc/conf.d/net. Acesta foloseşte o sintaxă simplă, dar care nu poate fi folosită intuitiv, dacă nu ştiţi să setaţi reţeaua manual. Dar nu vă temeţi, vă vom explica totul. Un exemplu de fişier comentat ce acoperă deverse configuraţii este disponibil în /etc/conf.d/net.example.

DHCP este utilizat implicit şi nu necesită nici o configurare ulterioară.

Dacă trebuie să vă configuraţi conexiunea la reţea, fie pentru că aveţi nevoie să specificaţi anumite opţiuni DHCP sau pentru că nu utilizaţi deloc DHCP, deschideţi /etc/conf.d/net cu editorul vaforit (în acest exemplu este folosit nano ):

Cod 2.4: Deschiderea /etc/conf.d/net pentru editare

# nano -w /etc/conf.d/net

Veţi observa următorul fişier:

Cod 2.5: Fişierul implicit /etc/conf.d/net

# Această configuraţie goală va utiliza automat DHCP pentru pentru orice script
# net.* din /etc/init.d. Pentru a crea o configuraţie mai completă, vă rugăm
# să analizaţi fişierul /etc/conf.d/net.example şi să salvaţi configuraţia în
# /etc/conf.d/net (acest fişier :]!).

Pentru a introduce propriile dvs. adrese IP, netmask şi gateway, trebuie să setaţi atât config_eth0 cât şi routes_eth0:

Cod 2.6: Setarea manuală a informaţiilor despre IP pentru eth0

config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )

Pentru a utiliza DHCP şi a adăuga anumite opţiuni DHCP, definiţi config_eth0 şi dhcp_eth0:

Cod 2.7: Obţinerea unei adrese IP pentru eth0 în mod automat

config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

Vă rugăm să consultaţi fişierul /etc/conf.d/net.example pentru o listă cu toate opţiunile disponibile.

Dacă aveţi mai multe interfeţe de reţea, repetaţi paşii de mai sus pentru config_eth1, config_eth2, etc.

Salvaţi configuraţia şi ieşiţi pentru a continua.

Pornirea Automată a Reţelei la Boot

Pentru a activa interfeţele de reţea la boot, acestea trebuie adăugate la nivelul de execuţie default. Dacă aveţi interfeţe PCMCIA, ar trebui să săriţi această secţiune, având în vedere că ele sunt pornite de scripturile de iniţializare PCMCIA.

Cod 2.8: Adăugarea net.eth0 la nivelul de execuţie default

# rc-update add net.eth0 default

Dacă aveţi mai multe interfeţe de reţea, trebuie să creaţi scripturi de iniţializare corespunzătoare net.eth1, net.eth2 etc. Puteţi folosi ln pentru acest lucru:

Cod 2.9: Crearea de scripturi de iniţializare suplimentare

# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default

Scrierea Informaţiilor despre Reţea

Trebuie să informaţi Linux-ul despre reţea. Acesta este definită în /etc/hosts şi permite rezolvarea numelor corespondente adreselor IP pentru host-urile ce nu sunt rezolvate de serverul DNS. Trebuie să va definiţi sistemul. De asemenea, aţi putea să definiţi şi alte sisteme din reţeaua dvs. dacă nu doriţi să vă setaţi propriul server intern de DNS.

Cod 2.10: Deschiderea /etc/hosts

# nano -w /etc/hosts

Cod 2.11: Completarea cu informaţii privind reţeaua

(Aceasta defineşte sistemul curent)
127.0.0.1     tux.homenetwork tux localhost

(Definiţi alte sisteme din reţeaua locală.
Acestea au nevoie de o adresă IP statică pentru a fi definite în acest mod.)
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

Salvaţi şi ieşiţi din editor pentru a continua.

Dacă nu aveţi PCMCIA, puteţi continua cu Informaţiile despre Sistem. Utilizatorii PCMCIA ar trebui să citească următoarea parte despre PCMCIA.

Opţional: Activarea PCMCIA în scopul Funcţionării

Notă: pcmcia-cs este disponibil doar pentru platformele x86, amd64 şi ppc.

Utilizatorii PCMCIA ar trebui mai întâi să instaleze pachetul pcmcia-cs. Aceasta îi include şi pe utilizatorii ce vor rula un kernel 2.6 (chiar dacă aceştia nu vor utiliza driver-ele PCMCIA din acest pachet). USE="-X" este necesar pentru a nu instala xorg-x11 în acest moment:

Cod 2.12: Instalarea pcmcia-cs

# USE="-X" emerge pcmcia-cs

După instalarea pcmcia-cs, adăgaţi pcmcia la runlevel-ul default:

Cod 2.13: Adăugarea pcmcia la nivelul de execuţie default

# rc-update add pcmcia default

8.c. Informaţii Despre Sistem

Parola pentru Root

Mai întâi setăm parola pentru root, tastând:

Cod 3.1: Setarea parolei pentru root

# passwd

Dacă doriţi ca root să poată se efectueze login printr-o consolă serial, adăugaţi tts/0 în /etc/securetty:

Cod 3.2: Adăugarea tts/0 în /etc/securetty

# echo "tts/0" >> /etc/securetty

Informaţii Despre Sistem

Gentoo foloseşte /etc/rc.conf pentru configuraţii generale, care afectează tot sistemul. Deschideţi /etc/rc.conf şi savuraţi toate comentariile din acest fişier :)

Cod 3.3: Deschiderea /etc/rc.conf

# nano -w /etc/rc.conf

Când aţi terminat configurarea în fişierul /etc/rc.conf, salvaţi şi ieşiţi.

După cum se poate observa, fişierul are multe comentarii pentru a vă ajuta în setarea corectă a variabilelor de configurare necesare. Vă puteţi configura fonturile pentru consolă, editorul implicit şi managerul de login (ca gdm sau kdm).

Gentoo utilizează /etc/conf.d/keymaps pentru a manipula configurarea tastaturii. Editaţi-l pentru a vă configura tastatura.

Cod 3.4: Deschiderea fişierului /etc/conf.d/keymaps

# nano -w /etc/conf.d/keymaps

Acordaţi mai multă atenţie variabilei KEYMAP. Dacă selectaţi în mod greşit KEYMAP, veţi obţine rezultate ciudate când tastaţi.

Notă: Utilizatorii sistemelor SPARC bazate pe USB şi alte clone SPARC vor avea nevoie probabil să selecteze un tip de dispunere i386 (precum "us") în loc de "sunkeymap". PPC utilizează o dispunere a tastelor de tipul x86 pe majoritatea sistemelor. Utilizatorii ce doresc să poată utiliza tipurile de dispunere ADB la boot, trebuie să activeze semnalele codurilor de taste ADB în kernel-ul lor şi trebuie să seteze un tip de dispunere mac/ppc în /etc/conf.d/keymaps.

Când aţi terminat configurarea /etc/conf.d/keymaps, salvaţi şi ieşiţi.

Gentoo utilizează /etc/conf.d/clock pentru a seta opţiunile de ceas. Editaţi-l conform nevoilor dvs.

Cod 3.5: Deschiderea fişierului /etc/conf.d/clock

# nano -w /etc/conf.d/clock

Dacă ceasul hardware nu este setat la UTC, trebuie sa adăugaţi CLOCK="local" în acest fişier. Altfel, veţi observa mesaje despre "clock skew" (ceas desincronizat). În plus, Windows presupune că ceasul hardware este setat ca local, deci decă doriţi dualboot ar trebui să setaţi această variabilă corespunzător, altfel vor apărea probleme.

Când aţi terminat configurarea /etc/conf.d/clock, salvaţi şi ieşiţi.

Dacă nu instalaţi Gentoo pe un sistem IBM PPC64, continuaţi cu Instalarea Utilitarelor de Sistem Necesare.

Configurarea Consolei

Notă: Următoarea secţiune se aplică platformelor hardware IBM PPC64.

Dacă rulaţi Gentoo pe un sistem IBM PPC64 şi utilizaţi o consolă virtuală, trebuie să decomentaţi linia corespunzătoare în /etc/inittab pentru ca această consolă virtuală să ruleze un prompt de login.

Cod 3.6: Activarea suportului hvc sau hvsi în /etc/inittab

hvc0:12345:respawn:/sbin/agetty -L 9600 hvc0
hvsi:12345:respawn:/sbin/agetty -L 19200 hvsi0

Ar trebui, de asemenea, să verificaţi existenţa consolei virtuale în /etc/securetty.

Acum, puteţi continua cu Instalarea Utilitarelor de Sistem Necesare.

9. Instalarea Utilitarelor de Sistem Necesare

9.a. Managerul de Fişiere Dispozitiv

Dacă utilizaţi un kernel 2.4 şi instalaţi Gentoo din stage 3, atunci sunt unele setări pe care trebuie să le efectuaţi. Deoarece Gentoo utilizează acum udev în mod implicit şi udev nu este suportat de versiunile 2.4 de kernel, va trebui să utilizaţi devfsd şi să ştergeţi udev.

Cod 1.1: Instalarea devfsd

(Pentru cei ce utilizează versiunile de kernel 2.4.x în instalarea stage 3)
# emerge --unmerge udev
# emerge devfsd

9.b. Sistemul de Log

Unele utilitare lipsesc din arhiva stage3 pentru că există mai multe pachete care oferă aceeaşi funcţionalitate. Depinde de dvs., acum, să le alegeţi pe cele care le doriţi instalate.

Primul instrument pentru care trebuie să te decizi, trebuie să asigure facilităţi de logare pentru sistemul tău. Unix si Linux au istorie excelentă în acest domeniu -- dacă doriţi puteţi sa log-aţi tot ce se întâmplă în sistemul dvs. în fişierele log. Aceasta se întâmplă prin system logger.

Gentoo oferă mai multe sisteme de logare dintre care puteţi alege. Printre altele se numără sysklogd, care este un set tradiţional de sisteme de logare, syslog-ng, un sistem avansat de logare metalog care este cel mai configurabil. Mai sunt disponibile şi altele în Portage - numărul nostru de pachete disponibile creşte zilnic.

Dacă doriţi să utilizaţi sysklogd sau syslog-ng, este recomandat să instalaţi şi logrotate, apoi, deoarece aceste sisteme de logare nu oferă nici un mecanism de rotire pentru fişierele log.

Pentru a instala un sistem de log la alegerea dvs., utilizaţi emerge pentru a-l instala şi adăugaţi-l în nivelul de execuţie default utilizând rc-update. Următorul exemplu instalează syslog-ng. Bineînţeles, înlocuiţi cu sistemul dvs. de log:

Cod 2.1: Instalarea unui sistem de log

# emerge metalog
# rc-update add metalog default

9.c. Opţional: Cron Daemon

Următorul este cron daemon. Este opţional şi nu este cerut de sistem dar este înţelept să instalaţi unul. Ce este un cron daemon? Un cron daemon execută comenzile programate. Este foarte util dacă aveţi nevoie să executaţi regulat anumite comenzi (de exemplu zilnic, săptămânal sau lunar).

Gentoo oferă trei posibili cron daemons: dcron, fcron şi vixie-cron. Instalarea unuia dintre ei este identică cu instalarea sistemului de logare. Totuşi, dcron şi fcron cer o configurare specială, numită crontab /etc/crontab. Dacă nu ştiţi ce să alegeţi folosiţi vixie-cron.

Noi vă oferim vixie-cron pentru instalările fără reţea. Dacă doriţi altă aplicaţie cron puteţi aştepta şi îl puteţi instala ulterior.

Cod 3.1: Instalare cron daemon

# emerge vixie-cron
# rc-update add vixie-cron default
(Numai dacă ai ales dcron sau fcron) # crontab /etc/crontab

9.d. Opţional: Indexare de Fişiere

Dacă doriţi să vă indexaţi fişierele din sistemul dvs. pentru a le localiza rapid cu ajutorul utilitarului locate, trebuie să instalaţi sys-apps/slocate.

Cod 4.1: Instalarea slocate

# emerge slocate

9.e. Utilitare pentru Sistemul de Fişiere

În funcţie de ce sistem de fişiere folosiţi, trebuie să instalaţi utilitarele necesare sistemului dvs. (pentru a verifica integritatea sistemului de fişiere, a crea unele în plus etc.).

Următorul tabel afişează instrumentele pe care trebuie să le instalaţi dacă folosiţi un anumit tip de sistem de fişiere:

Sistem de Fişiere Utilitar Comanda pentru Instalare
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Dacă sunteţi un utilizator EVMS, trebuie să instalaţi, de asemenea, evms:

Cod 5.1: Instalarea utilitarelor EVMS

# USE="-gtk" emerge evms

USE="-gtk" va preveni instalarea dependenţelor. Dacă doriţi să activaţi utilitarele grafice pentru evms, puteţi recompila evms ulterior.

Dacă nu aveţi nevoie de alte utilitare pentru reţea adiţionale (cum ar fi rp-pppoe sau un client dhcp), continuaţi cu Configurarea Bootloader-ului.

9.f. Utilitare pentru Reţea

Opţional: Instalarea unui Client DHCP

Dacă doriţi ca Gentoo să obţină automat o adresă IP pentru interfeţele de reţea, trebuie să instalaţi dhcpcd (sau orice alt client DHCP) pe sistemul dvs. Dacă nu faceţi acest lucru acum, este posibil să nu vă mai puteţi conecta la internet după instalare!

Cod 6.1: Instalarea dhcpcd

# emerge dhcpcd

Opţional: Instalarea unui Client PPPoE

Dacă aveţi nevoie de rp-pppoe pentru a vă conecta la reţea, trebuie să-l instalaţi.

Cod 6.2: Instalarea rp-pppoe

# USE="-X" emerge rp-pppoe

Opţiunea USE="-X" va inhiba instalarea xorg-x11 ca dependenţă (rp-pppoe conţine utilitare grafice; dacă le doriţi activate, puteţi recompila rp-pppoe ulterior sau vi se va instala xorg-x11, acum -- ce necesită un timp îndelungat de compilare).

Opţional: Utilitarele RAID pentru sistemele IBM

Dacă utilizaţi SCSI RAID pe un sistem bazat pe POWER5, ar trebui să instalaţi pachetul iprutils ce vă va permite să lucraţi cu o matrice de disc RAID, să aflaţi starea discurilor din matrice şi să actualizaţi microcodul, alături de alte funcţionalităţi.

Cod 6.3: Instalarea iprutils

# emerge iprutils

Acum continuaţi cu Configurarea Bootloader-ului.

10. Configurarea Aplicaţiei Bootloader

10.a. Maşinile Silicon Graphics -- Setarea arcboot/arcload

Care?

Pe maşinile SGI, există două opţiuni de aplicaţii bootloader. arcboot şi arcload. Tabelul de mai jos afişează motivele pro şi contra pentru fiecare aplicaţie bootloader.

arcboot
+ Poate încărca de pe partiţii EXT2 şi EXT3, deci nu mai este nevoie să le stocaţi în antetul de volum
- Nu funcţionează pe Octane/Octane2, Origin 200/2000 sau Indigo2 Impact (R10000)
arcload
+ Boot-ează pe TOATE maşinile compatibile cu sistemele SGI
- Momentan, nu poate citi partiţiile EXT2/EXT3 şi, de aceea, are nevoie ca imaginile de kernel şi fişierul de configurare să fie stocate în antetul de volum

Notă: Numele de fişiere din antetul de volum SGI sunt limitate la 8 caractere şi nu pot exista mai mult de 16 fişiere într-un singur antet de volum.

Instalarea arcboot

Anterior în acest ghid, v-am explicat modul în care puteţi crea o imagine de kernel, apoi să o copiaţi în antetul de volum utilizând dvhtool. Există două mari nereguli cu acest sistem:

  • Nu este suportat de toate sistemele SGI
  • Necesită un antet de volum semnificant mai mare

Pentru a boot-a maşina, o aplicaţie bootloader, arcboot, a fost dezvoltată în acest scop. În locul plasării imaginii de kernel direct în antetul de volum, îl vom păstra în /boot (ce se află pe o partiţie EXT2/3), unde îl putem regăsi ulterior. Aşadar, primul nostru pas este să instalăm unele utilitare pe care le vom folosi ulterior...

Cod 1.1: Instalarea utilitarelor necesare

# emerge dvhtool arcboot

Comanda anterioară ar trebui să vă instaleze două utilitare, arcboot ce este stocat în antetul de volum şi ne încarcă imagini de kernel şi dvhtool ce ne ajută să plasăm arcboot în antetul de volum.

Binarul arcboot se află în /usr/lib/arcboot. Numele acestuia depinde de maşina pentru care este compilat.

  • arcboot.ip22: Binarul pentru sistemele Indy, Indigo2 (R4k) şi Challenge S
  • arcboot.ip32: Binarul pentru sistemele O2

Cod 1.2: Instalarea arcboot în antetul de volum

# dvhtool --unix-to-vh /usr/lib/arcboot/arcboot.ip?? arcboot

Apoi, verificăm prezenţa fişierului în antetul de volum.

Cod 1.3: Verificarea dacă arcboot a funcţionat corect

# dvhtool --print-volume-directory
----- directory entries -----
Entry #0, name "linux", start 4, bytes 3262570
Entry #1, name "newlinux", start 6377, bytes 7619627
Entry #3, name "arcboot", start 21260, bytes 51448
#

Notă: Veţi putea nota faptul că, în exemplul de mai sus, avem două imagini de kernel stocate, linux şi newlinux. Acesta sunt doar rămăşiţe de pe vremea în care abia începusem să utilizăm arcboot. Prezenţa acestora nu contează -- atât timp cât arcboot este prezent, totul este bine.

Dacă aţi configurat vreodată Linux Loader (lilo), veţi observa că arcboot are o sintaxă similară în fişierul de configurare. Reţineţi totuşi; arcboot se aşteaptă ca fişierul propriu de configurare să se afle pe o partiţie EXT2/3 ca /etc/arcboot.conf. Cea mai uşoară soluţie este să vă asiguraţi că /boot este o partiţie EXT2/3 şi că există un fişier denumit arcboot.conf în directorul /boot/etc. Un exemplu de fişier de configurare poate fi regăsit în /etc/arcboot.conf.sample.

Notă: Ajustaţi căile corespunzător, dacă aveţi o partiţie separată pentru /boot.

Cod 1.4: Plasarea arcboot.conf în locaţia normală

(Creaţi directorul /boot/etc)
# mkdir /boot/etc

(Plasaţi fişierul nostru de configurare în directorul destinaţie)
# cp /etc/arcboot.conf.sample /boot/etc/arcboot.conf

(Creaţi un link simbolic înapoi în /etc)
# ln -s /boot/etc/arcboot.conf /etc/arcboot.conf

(... şi un link simbolic în /boot indicând spre el)
# (cd /boot; ln -s . boot)

Puteţi edita /etc/arcboot.conf în concordanţă cu preferinţele proprii. O posibilitate este crearea a două imagini de kernel: new, o imagine de kernel proaspăt compilată ce poate sau nu să funcţioneze; şi working, o imagine de kernel încercată, de încredere. Fişierul nostru arcboot.conf pentru această soluţie, arată ca în următorul exemplu.

Cod 1.5: Examplu de arcboot.conf

# arcboot.conf
#
# copyright 2002 Guido Guenther <agx@sigxcpu.org>
# versiune cunoscută ca funcţională
#
label=working
        image=/vmlinux
        append="root=/dev/sda3"

# versiune nouă, "netestată"
label=new
        image=/vmlinux-new
        append="root=/dev/sda3"

Odată ce aţi terminat de configurat, mai există doar câteva ajustări pe care trebuie să le efectuaţi în SGI PROM pentru a determina funcţionarea acestei configuraţii. Acestea sunt explicate, nu în secţiunea următoare (aceasta este pentru utilizatorii Cobalt), ci în secţiunea ce îi urmează acesteia, Repornirea Sistemului.

Instalarea arcload

arcload a fost scris pentru maşinile ce necesită kernel-uri pe 64 de biţi şi, din acest motiv, nu pot utiliza arcboot (ce nu poate fi compilat uşor ca un binar pe 64 de biţi). Rezolvă, de asemenea, particularităţile ce apar când încarcă kernel-urile direct din antetul de volum. Deci, acum ştiind despre ce este vorba, putem continua cu instalarea:

Cod 1.6: Instalarea arcload şi dvhtool

# emerge arcload dvhtool

Odată terminată instalarea, ar trebui să găsiţi binarul arcload în /usr/lib/arcload. Acum, există două fişiere:

  • sashARCS: Binarul pe 32 de biţi pentru sistemele Indy, Indigo2 (R4k), Challenge S şi O2
  • sash64: Binarul pe 64 de biţi pentru sistemele Octane/Octane2, Origin 200/2000 şi Indigo2 Impact

Utilizaţi dvhtool pentru a instala binarul corespunzător sistemului dvs. în antetul de volum:

Cod 1.7: Plasarea arcload în antetul de volum

(Utilizatorii Indy/Indigo2/Challenge S/O2)
# dvhtool --unix-to-vh /usr/lib/arcload/sashARCS sashARCS

(Utilizatorii Indigo2 Impact/Octane/Octane2/Origin 200/Origin 2000)
# dvhtool --unix-to-vh /usr/lib/arcload/sash64 sash64

Notă: Nu trebuie să utilizaţi numele de sashARCS sau sash64, decât dacă instalaţi în antetul de volum al unui mediu CD boot-abil. Pentru a boot-a normal de pe disc, le puteţi denumi cum doriţi.

Acum, utilizaţi dvhtool doar pentru a verifica dacă se află în antetul de volum.

Cod 1.8: Verificarea prezenţei arcload în antetul de volum

# dvhtool --print-volume-directory
----- directory entries -----
Entry #0, name "sash64", start 4, bytes 55859
#

Acum, fişierul arc.cf are o sintaxă similară cu C. Pentru mai multe detalii despre cum se configurează, consultaţi pagina arcload de pe site-ul wiki Linux/MIPS. Pe scurt, veţi defini un număr de opţiuni pe care le veţi activa sau dezactiva la boot, utilizând variabila OSLoadFilename.

Cod 1.9: Un exemplu de arc.cf

# Configurarea ARCLoad

# Unele opţiuni implicite...
append  "root=/dev/sda3";
append  "ro";
append  "console=ttyS0,9600";

# Definiţiile noastre principale. ip28 poate fi modificat, dacă doriţi.
ip28 {
        # Definirea unui kernel "funcţional"
        # Selectaţi setând OSLoadFilename="ip28(working)"
        working {
                description     "SGI Indigo2 Impact R10000\n\r";
                image system    "/working";
        }

        # Definirea unui kernel "nou"
        # Selectaţi setând OSLoadFilename="ip28(new)"
        new {
                description     "SGI Indigo2 Impact R10000 - Testing Kernel\n\r";
                image system    "/new";
        }

        # Pentru un kernel de depanare
        # Selectaţi setând OSLoadFilename="ip28(working,debug)"
        # sau OSLoadFilename="ip28(new,debug)"
        debug {
                description     "Debug console";
                append          "init=/bin/bash";
        }
}

Aceste informaţii sunt stocate în antetul de volum ca sash64 (sau sashARCS) ca în exemplul de mai jos. Kernel-urile ar trebui, de asemenea, plasate în antetul de volum.

Cod 1.10: Copierea arc.cf şi a kernel-ului în antetul de volum

# dvhtool --unix-to-vh arc.cf arc.cf
# dvhtool --unix-to-vh /usr/src/linux/vmlinux new

Când terminaţi, tot ce rămâne este să setaţi unele opţiuni în PROM. Consultaţi secţiunea despre Repornirea Sistemului.

10.b. MicroServer-ele Cobalt -- Setarea CoLo

Instalarea CoLo

Pe server-ele Cobalt, aceste maşini deţin o componentă firmware mai puţin capabilă, instalată pe cip. Componenta BOOTROM a Cobalt este primitivă, în comparaţie cu SGI PROM şi are unele limitări serioase.

  • Există o limită de (aproximativ) 675 kOcteţi pentru imaginile de kernel. Mărimea curentă a versiunii de kernel 2.4 face aproape imposibilă crearea unei imagini de kernel de această mărime. Linux 2.6 iese din discuţie în totalitate.
  • Imaginile de kernel pe 64 de biţi nu sunt suportate de componenta firmware (deşi acestea sunt la un nivel foarte experimental pe maşinile Cobalt, momentan)
  • Aplicaţia shell este cel mult primitivă

Pentru a trece peste aceste limitări, o aplicaţie firmware alternativă, denumită CoLo (Cobalt Loader), a fost dezvoltată. Aceasta este o imagine BOOTROM ce poate fi, fie înscrisă în cipul flash din server-ul Cobalt, sau încărcată din aplicaţia firmware existentă.

Notă: Acest document vă va ghida în configurarea CoLo pentru a fi încărcat de aplicaţia firmware originală. Acesta este singura modalitate cu adevărat sigură şi recomandată pentru a seta CoLo.

Atenţie: Dacă doriţi, o puteţi înscrie în server şi să înlocuiţi în totalitate aplicaţia firmware originală -- oricum, sunteţi pe cont propriu în acest efort. Dacă ceva nu funcţionează, va trebui să îndepărtaţi fizic componenta BOOTROM şi să o reprogramaţi singuri cu aplicaţia firmware originală. Dacă nu sunteţi siguri cum să faceţi acest lucru, atunci NU rescrieţi memoria flash a maşinii. Nu ne asumăm nici o responsabilitate pentru orice se întâmplă dacă ignoraţi acest sfat.

Bun, am terminat cu avertismentele, să continuăm cu instalarea CoLo. Mai întâi începeţi cu instalarea pachetului.

Cod 2.1: Instalarea colo

# emerge colo

Cu acesta instalat (sperăm ca aţi citit mesajele ;-) ar trebui să puteţi să regăsiţi în directorul /usr/lib/colo două fişiere, colo-chain.elf: "imaginea de kernel" care va fi încărcată de aplicaţia firmware şi colo-rom-image.bin: o imagine ROM pentru a o înscrie în BOOTROM. Începem prin a mount-a /boot şi a stoca copia compresată a colo-chain.elf în /boot unde sistemul se aşteaptă să o găsească.

Cod 2.2: Plasarea CoLo în locaţia normală

# gzip -9vc /usr/lib/colo/colo-chain.elf > /boot/vmlinux.gz

Configurarea CoLo

Acum, când sistemul boot-ează pentru prima dată, vom încărca CoLo ce va afişa un meniu pe terminalul LCD posterior. Prima opţiune (cea considerată, de asemenea, implicită, după 5 secunde) este să boot-eze pe disc. Sistemul va încerca, apoi, să mount-eze prima partiţie de Linux găsită, şi să ruleze script-ul default.colo. Sintaxa este documentată în totalitate în documentaţia (puteţi arunca o privire în /usr/share/doc/colo-X.YY/README.shell.gz -- unde X.YY este versiunea instalată), şi este foarte simplă.

Notă: Doar un sfat: la instalarea kernel-ului, eu creez, de obicei, două imagini de kernel, kernel.gz.working -- o imagine de kernel cunoscută ca fiind funcţională, şi kernel.gz.new -- o imagine de kernel ce abia a fost compilată. Puteţi, fie să utilizaţi link-uri simbolice care să indice către imaginile de kernel "new" şi "working", sau pur şi simplu să redenumiţi imaginile de kernel.

Cod 2.3: Un exemplu simplu de default.colo

#:CoLo:#
mount hda1
load /kernel.gz.working
execute root=/dev/hda3 ro console=ttyS0,115200

Notă: CoLo va refuza să încarce un script ce nu începe cu linia #:CoLo:#. Gândiţi-vă la aceasta ca un echivalent a utilizării #!/bin/sh în aplicaţii script pentru shell.

Este, de asemenea, posibil să vi se pună o întrebare, cum ar fi care imagine de kernel şi configuraţie doriţi să încărcaţi, cu un timp de expirare implicit. Această configuraţie întreabă utilizatorul care kernel să fie utilizat şi execută imaginea aleasă. vmlinux.gz.new şi vmlinux.gz.working pot fi imaginile de kernel efectiv sau legături simbolice ce indică spre imaginile de kernel de pe acel disc. Argumentul 50 pentru select specifică faptul că ar trebui să ar trebui să înceapă cu prima opţiune ("Working") după 50/10 secunde.

Cod 2.4: Configuraţie bazată pe meniuri

#:CoLo:#

lcd "Mounting hda1"
mount hda1
select "Which Kernel?" 50 Working New

goto {menu-option}
var image-name vmlinux.gz.working
goto 3f
@var image-name vmlinux.gz.working
goto 2f
@var image-name vmlinux.gz.new

@lcd "Loading Linux" {image-name}
load /{image-name}
lcd "Booting..."
execute root=/dev/hda5 ro console=ttyS0,115200
boot

Consultaţi documentaţia din /usr/share/doc/colo-VERSIUNE pentru mai multe informaţii.

10.c. Pregătirea Consolei Seriale

Bun, instalarea Linux, în stadiul actual, va boot-a fără probleme, dar presupune că veţi fi log-aţi pe un terminal fizic. Pe maşinile Cobalt, această presupunere nu este una bună -- nu există terminal fizic.

Notă: Aceia ce nu deţin luxul unui cip grafic suportat, pot omite această secţiune, dacă doresc.

Mai întâi, rulaţi un editor şi modificaţi fişierul /etc/inittab. În partea de jos a fişierului, veţi regăsi ceva asemănător cu:

Cod 3.1: Configuraţia inittab

# CONSOLA SERIALA
#c0:12345:respawn:/sbin/agetty 9600 ttyS0 vt102

# TERMINALE
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Acţiunea în cazul "salutului cu trei degete".
ca:12345:ctrlaltdel:/sbin/shutdown -r now

Mai întâi, decomentaţi linia c0. Implicit, este setat să utilizeze un terminal cu o viteză de transmisie de 9600 bps. Pe server-ele Cobalt ar trebui să schimbaţi această rată la 115200 pentru a fi egală cu rata decisă de BOOT ROM. Aşa arată această secţiune pe maşina mea. Pe o maşină mai primitivă (spre ex. server-ele Cobalt), recomandăm, de asemenea, comentarea liniilor în legătură cu terminalele locale (de la c1 la c6), deoarece acestea obişnuiesc să aibă comportamente ciudate în momentul în care nu pot accesa /dev/ttyX.

Cod 3.2: Exemplu de parte din inittab

# CONSOLA SERIALA
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102

# TERMINALE -- Acestea sunt nefolositoare pe o maşina qube
#c1:12345:respawn:/sbin/agetty 38400 tty1 linux
#c2:12345:respawn:/sbin/agetty 38400 tty2 linux
#c3:12345:respawn:/sbin/agetty 38400 tty3 linux
#c4:12345:respawn:/sbin/agetty 38400 tty4 linux
#c5:12345:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Acum, în cele din urmă... va trebui să-i specificăm sistemului că portul serial local poate fi considerat cu încredere un terminal securizat. Fişierul ce va trebui modificat este /etc/securetty. Acesta conţine o listă de terminale pe care sistemul de consideră de încredere. Pur şi simplu, adăugăm încă două linii, permiţând liniei seriale să fie utilizată pentru login pentru utilizatorul root.

Cod 3.3: Activarea posibilităţii de login pentru root pe consola serială

(/dev/ttyS0 -- numele tradiţional pentru primul port serial)
# echo 'ttyS0' >> /etc/securetty

(În ultimul timp, Linux îl denumeşte, de asemenea, /dev/tts/0 -- deci îl vom
adăuga şi pe acesta)
# echo 'tts/0' >> /etc/securetty

10.d. Repornirea Sistemului

Ieşiţi din mediul chroot şi demount-aţi toate partiţiile mount-ate. Apoi tastaţi comanda magică pe care aţi aşteptat-o: reboot.

Cod 4.1: Ieşirea din chroot, demount-area tuturor partiţiilor şi repornirea

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Notă: Utilizatorii Cobalt: Restul acestei secţiuni acoperă modul de configurare a SGI PROM pentru a boot-a arcboot/arcload şi a încărca Linux. Această operaţiune nu este valabilă pentru configurarea dispozitivelor server Cobalt. De fapt, aţi terminat -- nu mai este necesară nici o configurare pentru a efectua boot pentru prima dată, puteţi trece la secţiunea următoare: Finalizarea Instalării Gentoo

10.e. Optimizarea SGI PROM

Acum, că aţi instalat aplicaţia bootloader, sunteţi gata să reporniţi maşina.

Cod 5.1: Repornirea

(Ieşirea din mediul chroot)
# exit

(Demount-area discurilor)
# umount /gentoo/boot
# umount /gentoo

(Repornirea)
# reboot

După ce aţi repornit, navigaţi în System Maintenance Menu şi selectaţi Enter Command Monitor (5) ca atunci când aţi efectuat boot din reţea.

Cod 5.2: Configurarea PROM pentru boot-area Gentoo

1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor

Option? 5
Command Monitor.  Type "exit" to return to the menu.

(Setaţi unele opţiuni ce sunt comune, atât pentru arcload cât şi pentru arcboot)

(Scrieţi locaţia Antetului de Volum)
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)

(Boot-area Automată a Gentoo)
>> setenv AutoLoad Yes

(Setarea zonei de fus orar)
>> setenv TimeZone EST5EDT

(Utilizarea consolei seriale - utilizatorii de adaptoare grafice ar trebui să aibă "g" în loc de "d1" (unu))
>> setenv console d1

(Setarea ratei de transmitere pentru consola serială. Aceasta este opţională,         )
(setarea implicită este 9600, deşi se pot utiliza rate de până la 38400, dacă doriţi. )
>> setenv dbaud 9600

Acum, următoarele setări depind de cum boot-aţi sistemul.

Setările pentru boot-area direct de pe antetul de volum

Această secţiune este pentru completare. Este recomandat ca utilizatorii să instaleze arcboot sau arcload în loc.

Notă: Aceasta funcţionează doar pe Indy, Indigo2 (R4k) şi Challenge S.

Cod 5.3: Setări PROM pentru boot-area de pe antentul de volum

(<root device> = Partiţia root a Gentoo, ex. /dev/sda3)
>> setenv OSLoadPartition <root device>

(Pentru a afişa imaginile de kernel disponibile, tastaţi "ls")
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>

(Definiţi parametrii de kernel pe care doriţi să-i utilizaţi)
>> setenv OSLoadOptions <kernel parameters>

Dacă doriţi să încercaţi un kernel fără a modifica parametrii de kernel, puteţi face acest lucru utilizând comanda PROM boot -f:

Cod 5.4: Boot-area fără a modifica variabilele de mediu

(Boot-area unui kernel "nou", cu opţiuni adiţionale)
# boot -f new root=/dev/sda3 ro

Setări pentru arcload

arcload utilizează opţiunea OSLoadFilename pentru a specifica care opţiuni să seteze din arc.cf. Fişierul de configurare este în esenţă, un script cu blocuri ce definesc imaginile de boot pentru diversele sisteme. Astfel, setând OSLoadFilename=mysys(serial) activează setările pentru blocul mysys, apoi setează opţiunile suprascrise în serial.

În exemplul de mai sus, avem un bloc definit, ip28 cu opţiunile disponibile working, new şi debug. Vom defini variabilele PROM, în felul următor:

Cod 5.5: Setările PROM în cazul utilizării arcload

(Selectaţi arcload ca aplicaţie bootloader:- sash64 sau sashARCS)
>> setenv OSLoader sash64

(Utilizaţi imaginea de kernel "working" definită în secţiunea "ip28" a fişierului arc.cf)
>> setenv OSLoadFilename ip28(working)

Setări pentru arcboot

arcboot îşi încarcă fişierul de configurare şi imaginile de kernel din partiţia /boot, ce trebuie să fie formatată ca EXT2 sau EXT3. Astfel, OSLoadPartition trebuie să indice către acea partiţie. OSLoader ar trebui să indice către binarul arcboot din antetul de volum, iar OSLoadFilename este numele imaginii utilizate.

Cod 5.6: Setările PROM în cazul utilizării arcboot

(Citeşte configuraţia şi imaginile de kernel de pe discul SCSI ID# 1, partiţia 0 -- sda1)
>> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(0)

(Utilizarea arcboot ca bootloader)
>> setenv OSLoader arcload

(Care imagine din arcboot.conf să fie încărcată)
>> setenv OSLoadFilename working

Când testaţi imagini de kernel cu arcboot, puteţi specifica o imagine alternativă, în modul următor (unde new este imaginea alternativă):

Cod 5.7: Specificarea unei imagini alternative

# boot new

Gata

Acum sunteţi pregătiţi să utilizaţi Gentoo! Boot-aţi în instalarea dvs. Gentoo şi terminaţi cu Finalizarea Instalării dvs. Gentoo.

11. Finalizarea Instalării Gentoo

11.a. Administrarea Utilizatorilor de Sistem

Adăugarea Unui Utilizator pentru Întrebuinţarea Zilnică

Utilizând root pe un sistem Unix/Linux este periculos şi trebuie evitat cât mai mult. De aceea se recomandă insistent să adăugaţi un user pentru folosirea zilnică.

Grupurile în care user-ul este membru definesc activităţile pe care le poate efectua user-ul. Următorul tabel afişează un număr de grupuri importante pe care le puteţi utiliza:

Grup Descriere
audio pentru a avea acces la dispozitivele audio
cdrom pentru a putea avea acces direct dispozitivele cdrom
floppy pentru a putea avea acces direct dispozitivele floppy
games pentru a putea rula jocuri
portage pentru a putea rula emerge --pretend ca utilizator normal
usb pentru a putea accesa dispozitivele USB
plugdev pentru a putea efectua mount şi utiliza dispozitivele conectabile, cum ar fi camerele digitale şi memoriile USB
video pentru a putea accesa componentele hardware de captură video şi a putea beneficia de accelerare hardware
wheel pentru a putea utiliza su

De exemplu, pentru a creea un user john care este membru al grupurilor wheel, users şi audio trebuie să efectuaţi login ca root (numai utilizatorii root pot crea user-i) şi să rulaţi useradd:

Cod 1.1: Adăugarea unui user pentru întrebuinţarea zilnică

Login: root
Password: (Parola dvs. pentru root)

# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password: (Introduceţi parola pentru john)
Re-enter password: (Reintroduceţi parola pentru verificare)

Dacă acest user are nevoie să facă anumite operaţi ca root, se poate utiliza comanda su - pentru a primi privilegii de root, doar temporar. O altă metodă este pachetul sudo care, dacă este configurat bine, este foarte sigur.

12. Cum să continuăm?

12.a. Documentaţie

Felicitări! Acum aveţi un sistem Gentoo funcţional. Dar ce să faceţi mai departe? Care vă sunt opţiunile actuale? Ce să exploraţi mai întâi? Gentoo oferă utilizatorilor o mulţime de posibilităţi, şi deci o mulţime de caracteristici documentate (şi mai puţin documentate).

Trebuie neapărat să aruncaţi o privire la următoarea parte al Gentoo Handbook, intitulată Lucrul cu Gentoo care explică cum să vă menţineţi aplicaţiile actualizate, cum să instalaţi mai multe aplicaţii, ce sunt indicatorii USE, cum sistemul funcţionează sistemul de Iniţializare Gentoo, etc.

Dacă sunteţi interesat în optimizarea sistemului pentru întrebuinţare ca desktop, sau doriţi să învăţaţi cum să configuraţi sistemul pentru a fi un desktop complet funcţional, consultaţi vastele noaste Resurse de Documentaţie Desktop pentru pentru Gentoo. De asemenea, aţi putea utiliza ghidul pentru localizare pentru a vă face sistemul mai familiar.

Dispunem, de asemenea, de un Manual pentru Securitate în Gentoo ce merită citit.

Pentru o listă completă cu toata documentaţia disponibilă, vizitaţi pagina cu Resursele despre Documentaţie .

12.b. Gentoo Online

Bineînţeles ca sunteţi întotdeauna bine veniţi pe Forumurile Gentoo sau pe numeroasele canale IRC Gentoo.

Mai avem şi numeroase liste de discuţii deschise tuturor utilizatorilor noştri.Informaţia care vă explică cum să vă înscrieţi este conţinută în acea pagină.

Noi vom tace acum, şi vă vom lăsa să vă savuraţi instalarea :)

B. Lucrul cu Gentoo

1. Introducere în Portage

1.a. Portage vă urează Bun Venit

Portage este probabil inovaţia cea mai notabilă din Gentoo în categoria administrării pachetelor. Fiind foarte flexibil şi conţinând un număr enorm de caracteristici este categorizat de multe ori ca fiind cel mai bun pachet software de administrare disponibil în Linux.

Portage este scris complet în Python şi Bash fiind astfel vizibil pentru utilizatori, amândouă fiind limbaje de scripting.

Majoritatea utilizatorilor vor utiliza Portage prin intermediul utilitarului emerge. Acest capitol nu are ca scop copierea informaţiei disponibile în pagina de manual a emerge. Pentru o consultare completă asupra opţiunilor emerge, vă rugăm să consultaţi pagina de manual:

Cod 1.1: Consultarea paginii de manual a emerge

$ man emerge

1.b. Strucutura Portage

Ebuild-uri

Când ne referim la pachete, adesea înseamnă titluri de pachete software care sunt disponibile utilizatorilor Gentoo prin intermediul structurii Portage. Structura Portage este o colecţie de fişiere ebuild, ce conţin toată informaţia necesară pentru ca Portage să administreze aplicaţiile (instalare, căutare, cereri, ...). Aceste fişiere ebuild sunt localizate implicit în /usr/portage.

Oricând interogaţi Portage în a efectueze o acţiune în legătură cu titlurile software, va utiliza fişierele ebuild din sistemul dvs. ca bază. Este, deci, important să vă actualizaţi în mod regulat fişierele ebuild de pe sistemul dvs., pentru ca Portage să cunoască aplicaţiile software noi, actualizările de securitate, etc.

Actualizarea Structurii Portage

Structura Portage este, de obicei, actualizată cu ajutorul rsync, un utilitar pentru transfer de fişiere rapid incremental. Actualizarea este destul de simplă, deoarece comanda emerge oferă o interfaţă pentru rsync:

Cod 2.1: Actualizarea structurii Portage

# emerge --sync

Dacă nu puteţi să efectuaţi rsync din cauza restricţiilor impuse de firewall, puteţi actualiza structura Portage utilizând arhivele snapshot ale structurii Portage generate de către noi zilnic. Utilitarul emerge-webrsync descarcă şi instalează automat ultima arhiva snapshot în sistemul dvs:

Cod 2.2: Rularea emerge-webrsync

# emerge-webrsync

1.c. Mentenanţa Software

Căutarea Pachetelor Software

Pentru a căuta prin structura Portage după titluri software, puteţi utiliza capabilităţile de căutare integrate în emerge. Implicit, emerge --search returnează numele pachetelor ale căror titluri corespund (fie integral sau parţial) cu termenul utilizat pentru căutare.

Spre exemplu, pentru a căuta toate pachetele ce conţin "pdf" în nume:

Cod 3.1: Căutarea pachetelor ce conţin pdf

$ emerge --search pdf

Dacă doriţi să căutaţi şi prin descrieri, puteţi utiliza parametrul --searchdesc (sau -S):

Cod 3.2: Cautarea pachetelor în legătură cu pdf

$ emerge --searchdesc pdf

Când veţi analiza ce vi se afişează, veţi observa că vă oferă multă informaţie. Câmpurile sunt marcate clar, deci nu vom intra în amănunt:

Cod 3.3: Exemplu de afişare în cazul 'emerge --search'

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Instalarea de Software

Odată ce aţi găsit un titlu de software satisfăcător, puteţi să-l instalaţi uşor cu emerge: doar adăugaţi numele pachetului. Spre exemplu, pentru a instala gnumeric:

Cod 3.4: Instalarea gnumeric

# emerge gnumeric

Deoarece multe aplicaţii sunt interdependente, orice încercare de a instala un anumit pachet software poate rezulta în instalarea altor câteva dependenţe, de asemenea. Nu vă faceţi griji, Portage poate manevra dependenţele bine. Dacă doriţi să aflaţi ce ar instala Portage în cazul unui anumit pachet, adăugaţi parametrul --pretend. Spre exemplu:

Cod 3.5: Simularea instalării gnumeric

# emerge --pretend gnumeric

Când îi specificaţi sistemului Portage să instaleze un pachet, va descărca codul sursă necesar de pe internet (dacă este necesar) şi-l va stoca implicit în /usr/portage/distfiles. Apoi, va despacheta, compila şi instala pachetul. Dacă doriţi ca portage doar să descarce sursele fără a le instala, adăugaţi opţiunea --fetchonly comenzii emerge:

Cod 3.6: Descărcarea codului sursă pentru gnumeric

# emerge --fetchonly gnumeric

Găsirea Documentaţiei Pachetelor Instalate

Multe pachete sunt distribuite cu documentaţia proprie. Uneori, indicatorul USE doc determină dacă documentaţia pachetului respectiv va instalată sau nu. Puteţi verifica existenţa unui indicator USE doc utilizând comanda emerge -vp <nume pachet>.

Cod 3.7: Verificarea existenţei unui indicator USE doc

(alsa-lib este doar un exemplu, bineînţeles.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

Puteţi activa sau dezactiva indicatorul USE doc, fie global în fişierul /etc/make.conf, fie specific pachetului, în fişierul /etc/portage/package.use file. Capitolul despre Indicatori USE acoperă acest aspect în detaliu.

Odată ce pachetul este instalat, documentaţia acestuia se poate regăsi, de obicei, într-un subdirector denumit în funcţie de pachet, în directorul /usr/share/doc. Puteţi, de asemenea, să afişaţi toate fişierele instalate cu utilitarul equery, ce face parte din pachetul app-portage/gentoolkit.

Cod 3.8: Localizarea documentaţiei unui pachet

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Alternativ, utilizaţi equery pentru a localiza fişierele interesante:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(Output omis)

Ştergerea de Software

Dacă doriţi să ştergeţi un pachet software de pe sistem, utilizaţi emerge --unmerge. Aceasta îi va specifica sistemului Portage să şteargă fişierele instalate de acel pachet din sistemul dvs. exceptând fişierele de configurare ale acelei aplicaţii, dacă au fost modificate după instalare. Omiterea fişierelor de configurare permite continuarea utilizării pachetului dacă mai decideţi vreodată să-l reinstalaţi.

În orice caz, un avertisment mare se aplică: Portage nu va verifica dacă pachetul pe care doriţi să-l îndepărtaţi îi este necesar altui pachet. Vă va avertiza, totuşi, când veţi dori să ştergeţi un pachet important ce vă va afecta funcţionarea sistemului în cazul operaţiei unmerge.

Cod 3.9: Ştergerea gnumeric din sistem

# emerge --unmerge gnumeric

Când ştergeţi un pachet din sistemul dvs., dependenţele acelui pachet care au fost instalate automat când aţi instalat aplicaţia sunt păstrate. Pentru ca Portage să vă localizeze toate dependenţele ce pot fi şterse, utilizaţi funncţionalitatea --depclean a aplicaţiei emerge. Vom trata acest subiect ulterior.

Actualizarea Sistemului

Pentru a vă menţine sistemul în stare perfectă (ca să nu mai menţionăm şi actualizările de securitate) trebuie să vă actualizaţi sistemul regulat. Deoarece sistemul Portage doar verifică fişierele ebuild din structura dvs. Portage, trebuie mai întâi să o actualizaţi pe aceasta. După ce structura Portage este actualizată, puteţi mai întâi să vă actualizaţi sistemul cu emerge --update world. În următorul exemplu vom utiliza, de asemenea, opţiunea --ask ce îi va specifica sistemului Portage să afişeze lista pachetelor ce trebuie actualizate şi vă va cere continuarea:

Cod 3.10: Actualizarea sistemului

# emerge --update --ask world

Portage va căuta, apoi, versiuni noi ale aplicaţiilor instalate. Totuşi, va verifica doar versiunile aplicaţiilor instalate explicit - nu şi dependenţele. Dacă doriţi să actualizaţi fiecare pachet din sistemul dvs., adăugaţi argumentul --deep:

Cod 3.11: Actualizarea întregului sistem

# emerge --update --deep world

Deoarece există şi actualizări de securitate în pachete pe care nu le-aţi instalat explicit în sistemul dvs. (dar sunt indicate ca dependenţe ale altor programe), este recomandat să rulaţi această comandă periodic.

Dacă aţi modificat oricare din indicatorii USE ulterior, va trebui să adăugaţi şi --newuse. Portage va verifica, apoi, dacă modificările necesită instalarea de noi pachete sau recompilarea celor deja existente:

Cod 3.12: Efectuarea unei actualizări complete

# emerge --update --deep --newuse world

Meta-Pachetele

Unele pachete din structura Portage, nu au un conţinut real, dar sunt utilizate pentru a instala o colecţie de pachete. Spre exemplu, pachetul kde va instala întreg mediul KDE pe sistemul dvs. prin implicarea unor alte pachete ce au legătură cu KDE ca dependenţe.

Dacă doriţi vreodată să ştergeţi un asemenea pachet din sistem, prin rularea emerge --unmerge pentru pachetul respectiv nu va avea un efect major pentru că dependenţele vor rămâne în sistem.

Portage are funcţionalitatea de a îndepărta dependenţe nerezolvate, de asemenea, dar, pentru că disponibilitatea aplicaţiilor este dependentă dinamic, va trebui întâi să actualizaţi în întregime sistemul, incluzând noile modificări aplicate în urma schimbării indicatorilor USE. Apoi, puteţi rula emerge --depclean pentru a şterge dependenţele nerezolvate. La sfârşit, trebuie să reinstalaţi aplicaţiile ce sunt legate dinamic de aplicaţiile, de acum şterse, dar care nu mai sunt necesare.

Toate acestea se pot efectua cu următoarele trei comenzi:

Cod 3.13: Îndepărtarea dependenţelor nerezolvate

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild este oferită de pachetul gentoolkit; nu uitaţi să-l instalaţi, mai întâi:

Cod 3.14: Instalarea pachetului gentoolkit

# emerge gentoolkit

1.d. Când Portage Reclamă În Legătura Cu...

SLOT-uri, Virtuale, Categorii, Arhitecturi şi Profile

Aşa cum am afirmat anterior, Portage este extrem de solid şi suportă multe caracteristici neexistente în alte utilitare de administrare a pachetelor. Pentru a înţelege aceasta, vom explica unele aspecte ale sistemului Portage fără a intra prea mult în detaliu.

Cu Portage, mai multe versiuni diferite ale unui singur pachet pot coexista într-un sistem. În timp ce alte distribuţii tind să-şi denumească pachetele conţinând versiunile (cum ar fi freetype şi freetype2), Portage utilizează o terminologie numită SLOT-uri. Un fişier ebuild, defineşte un anumit SLOT pentru versiunea sa. Ebuild-urile cu SLOT-uri diferite pot coexista în acelaşi sistem. Spre exemplu, pachetul freetype are fişiere ebuild ce conţin SLOT="1" şi SLOT="2".

Există, de asemenea, pachete ce oferă aceeaşi funcţionalitate, dar sunt implementate diferit. Spre exemplu, metalogd, sysklogd şi syslog-ng sunt toate aplicaţii de tip logger de sistem. Aplicaţiile ce se bazează pe disponibilitatea unui "logger de sistem" nu pot depinde de, spre exemplu, metalogd, ca aplicaţie de tip "logger de sistem", pentru orice aplicaţie de acest tip reprezintă o soluţie la fel de bună ca altele. Portage permite virtuale: fiecare aplicaţie de tip logger de sistem oferă virtual/syslog pentru ca aplicaţiile să poată depinde de virtual/syslog.

Aplicaţiile software se pot afla în diferite categorii în Portage. Implicit, sistemul dvs. acceptă doar pachete considerate de Portage ca fiind stabile. Cele mai multe titluri software noi, când sunt comise, sunt adăugate în categoria de testare, însemnând că trebuie să se mai efectueze unele teste înainte de a fi marcat ca stabil. Deşi veţi observa fişiere ebuild pentru aceste aplicaţii în structura Portage, sistemul Portage nu le va actualiza până când nu vor fi clasate în categoria stabilă.

Unele aplicaţii sunt disponibile doar pentru puţine arhitecturi. Fie aplicaţia nu rulează pe alte arhitecturi, ori mai trebuie testată, sau dezvoltatorul ce a comis aplicaţia în structura Portage nu poate verifica dacă pachetul funcţionează pe alte arhitecturi diferite.

Fiecare instalare Gentoo aderă la un anumit profil ce conţine, alături de alte informaţii, lista cu pachetele necesare pentru ca sistemul să funcţioneze normal.

Pachetele Blocate

Cod 4.1: Avertisment Portage în legătură cu pachetele blocate (cu --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Cod 4.2: Avertisment Portage în legătură cu pachetele blocate (fără --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

Fişierele ebuild conţin câmpuri speciale ce informează Portage despre dependenţele sale. Există două dependenţe posibile: dependenţe de compilare, declarate în DEPEND şi dependenţe de rulare, declarate în RDEPEND. Când una din aceste dependenţe marchează un pachet sau un virtual ca nefiind compatibil, se va genera un blocaj.

Pentru a repara un blocaj, puteţi alege să nu instalaţi pachetul sau să dezinstalaţi pachetul conflictual, mai întâi. În exemplul dat, puteţi opta să nu instalaţi postfix sau să ştergeţi, mai întâi, ssmtp.

Este, de asemenea, posibil ca două pachete care sunt pe cale să fie instalate să se blocheze unul pe celălalt. În acest caz rar, ar trebui să găsiţi motivul pentru care trebuie instalate amândouă. În cele mai multe cazuri puteţi instala doar unul dintre pachete. Dacă nu, vă rugăm să completaţi un bug la Sistemul de Urmărire a Bug-urilor al Gentoo.

Pachete Mascate

Cod 4.3: Avertisment Portage în legătură cu pachetele mascate

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

Cod 4.4: Avertisment Portage în legătură cu pachetele mascate - motivul

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Când doriţi să instalaţi un pachet care nu este disponibil pentru sistemul dvs., veţi primi această eroare de mascare. Ar trebui să încercaţi instalarea unei alte aplicaţii ce este disponibilă pentru sistemul dvs. sau să aşteptaţi până când pachetul este marcat ca disponibil. Există întotdeauna un motiv pentru care un pachet este mascat:

  • ~arch keyword înseamnă că aplicaţia nu a fost testată suficient pentru a fi pusă în structura principală. Aşteptaţi câteva zile sau săptămâni şi încercaţi din nou.
  • -arch keyword sau -* keyword înseamnă că aplicaţi nu funcţionează pe arhitectura dvs. Dacă dvs. credeţi că aplicaţia funcţionează, raportaţi un bug pe site-ul nostru bugzilla.
  • missing keyword înseamnă că aplicaţia nu a fost testată pe arhitectura dvs., încă. Cereţi echipei de portare să testeze pachetul sau testaţi-l dvs. pentru ei şi raportaţi rezultatele pe site-ul nostru bugzilla.
  • package.mask înseamnă că pachetul a fost găsit corupt, instabil sau, mai rău şi a fost marcat în mod deliberat ca a-nu-se-utiliza.
  • profile înseamnă că pachetul a fost găsit ca nepotrivit pentru profilul dvs. Aplicaţi vă poate afecta funcţionarea sistemului dacă aţi instala-o sau, pur şi simplu nu este compatibilă cu profilul utilizat de dvs.

Dependenţe lipsă

Cod 4.5: Avertisment Portage despre dependenţe lipsă

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

Aplicaţia pe care încercaţi să o instalaţi depinde de alt pachet care nu este disponibil pentru sistemul dvs. Vă rugăm să verificaţi bugzilla dacă problema este cunoscută şi, dacă nu este, vă rugăm să o raportaţi. Dacă nu utilizaţi structuri mixte, problema nu ar trebui să se întâmple şi, de aceea, reprezintă un bug.

Nume de Ebuild Ambiguu

Cod 4.6: Avertisment Portage despre numele ambigue de ebuild-uri

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

Aplicaţia pe care doriţi să o instalaţi are un nume ce corespunde unui număr mai mare de un pachet. Trebuie să furnizaţi şi numele categoriei, de asemenea. Portage vă va informa de toate descrierile pentru a vă alege.

Dependenţe Circulare

Cod 4.7: Avertisment Portage despre dependenţele circulare

!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

Două (sau mai multe) pachete pe care doriţi să le instalaţi depind unele de altele şi, de aceea, nu pot fi instalate. Acesta este, cel mai probabil un bug în structura Portage. Vă rugăm să resincronizaţi după un timp şi să încercaţi din nou. Puteţi încerca, de asemenea, bugzilla pentru a vedea dacă problema este cunoscută şi, dacă nu este, să o raportaţi.

Descărcare eşuată

Cod 4.8: Avertisment Portage despre o descărcare eşuată

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage nu a putut să descarce sursele pentru aplicaţia dată şi va încerca să instaleze celelalte aplicaţii (dacă este cazul). Această eşuare se poate întâmpla datorită unui mirror ce nu s-a sincronizat corect sau din cauză că descrierea ebuild indică spre o locaţie incorectă. Serverul unde sunt localizate sursele poate fi, de asemenea, indisponibil dintr-un motiv oarecare.

Reîncercaţi după o oră pentru a vedea dacă problema încă persistă.

Protecţia Profilului Sistemului

Cod 4.9: Avertisment Portage despre un pachet protejat de profil

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Aţi cerut să ştergeţi un pachet ce este parte din pachetele de bază ale sistemului dvs. Este listat în profilul dvs. şi necesar şi nu ar trebui, de aceea, să fie şters din sistemul dvs.

2. Indicatori USE

2.a. Ce sunt indicatorii USE?

Ideeile din spatele indicatorilor USE

Când instalaţi Gentoo (sau orice altă distribuţie, sau chiar sistem de operare din acel punct de vedere) faceţi alegerile în funcţie de mediul în care lucraţi. O serie de setări pentru un server diferă de setul de setări pentru o staţie de lucru. O staţie de lucru destinată jocurilor diferă de o staţie de lucru pentru prelucrări 3D.

Aceasta nu este adevărat numai pentru alegerea pachetelor pe care le doriţi instalate, dar şi ce caracteristici ar trebui să suporte un anumit pachet. Dacă nu aveţi nevoie de OpenGL, de ce să vă obosiţi să instalaţi OpenGL şi suport OpenGL pentru majoritatea pachetelor? Dacă nu doriţi să utilizaţi KDE, v-aţi obosi să vă compilaţi pachetele cu suport KDE dacă acele pachete funcţionează fără probleme şi fără acel suport?

Pentru a ajuta utilizatorii să decidă ce să instaleze/activeze şi ce nu, am dorit ca ei să îşi specifice mediul într-un mod facil. Aceasta obligă utilizatorii să decidă ceea ce doresc cu adevărat şi să faciliteze procesul Portage, sistemul nostru de administrare a pachetelor, în luarea deciziilor utile.

Definirea unui indicator USE

Vă prezentăm indicatorii USE. Un astfel de indicator este un cuvânt cheie ce reprezintă suport şi informaţii despre dependenţe relativ la un anumit concept. Dacă definiţi un anumit indicator USE, Portage va memora faptul ca doriţi suport pentru cuvântul cheie ales. Bineînţeles, aceasta modifică şi informaţia relativă la dependenţe pentru un pachet.

Să aruncăm o privire la un exemplu specific: cuvântul cheie kde. Dacă nu aveţi acest cuvânt cheie în variabila dvs. USE, toate pachetele ce conţin suport opţional pentru KDE vor fi compilate fără suport KDE. Toate pachetele ce au ca dependenţă optională KDE vor fi instalate fără a instala librăriile KDE (ca dependenţă). Dacă aţi definit cuvântul cheie kde, atunci acele pachete vor fi compilate cu suport KDE, şi librăriile KDE vor fi instalate ca dependenţă.

Prin definirea corectă a cuvintelor cheie, veţi obţine un sistem construit specific nevoilor dvs.

Ce indicatori USE există?

Există două tipuri de indicatori USE: indicatori USE globali şi locali.

  • Un indicator USE global este utilizat de mai multe pachete, la nivel de sistem. Acesta este ceea ce cei mai mulţi dintre utilizatori văd ca indicatori USE.
  • Un indicator USE local este utilizat de către un singur pachet pentru a efectua decizii specifice pachetului.

O listă a indicatorilor USE globali poate fi găsită online sau local în /usr/portage/profiles/use.desc.

O listă locală de indicatori USE este disponibilă în /usr/portage/profiles/use.local.desc.

2.b. Utilizarea indicatorilor USE

Declararea permanentă a indicatorilor USE

Sperăm că sunteţi convinşi de importanţa indicatorilor USE şi vă vom informa cu privire la modul de declarare a indicatorilor USE.

Aşa cum am menţionat anterior, toţi indicatorii USE sunt declaraţi în variabila USE. Pentru a înlesni activitatea utilizatorilor, deja oferim o setare USE implicită. Această setare este o colecţie de indicatori USE care noi credem ca sunt în general folosiţi de către utilizatorii Gentoo. Această setare implicită este definită în fişierele make.defaults din profilul dvs.

Profilul luat în considerare de către sistemul dvs. este indicat de link-ul simbolic /etc/make.profile. Fiecare profil funcţionează peste altul mai larg, rezultatul fiind, deci, suma tuturor profilelor. Cel mai superior profil este profilul base (/usr/portage/profiles/base).

Să aruncăm o privire asupra acestei setări implicite pentru profilul 2004.3:

Cod 2.1: Variabila USE cumulată din make.defaults pentru profilul 2004.3

(Acesta este un exemplu şi este posibil să se fi schimbat ulterior)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

După cum puteţi observa, variabila deja conţine destul de multe cuvinte cheie. Nu alteraţi fişierul make.defaults pentru a ajusta variabila USE în concordanţă cu nevoile dvs.: modificările în acest fişier vor fi suprascrise în momentul actualizării sistemului Portage!

Pentru a schimba această setare implicită, trebuie să adăugaţi sau să eliminaţi cuvinte cheie variabilei USE. Acest lucru se poate efectua global prin definirea variabilei USE în /etc/make.conf. În această variabilă, adăugaţi indicatorii USE adiţionali de care aveţi nevoie, sau eliminaţi indicatorii USE pe care nu-i doriţi. Această ultimă acţiune se efectuează prin prefixarea cuvântului cheie cu semnul minus ("-").

Spre exemplu, pentru a elimina suportul pentru KDE şi QT dar să adăugaţi suportul pentru ldap, următoarea setare USE poate fi definită în /etc/make.conf:

Cod 2.2: Un exemplu de setare USE în /etc/make.conf

USE="-kde -qt ldap"

Declararea indicatorilor USE individual pentru pachete

Uneori doriţi să declaraţi un anumit indicator USE pentru una (sau mai multe) aplicaţii, dar nu global pentru tot sistemul. Pentru aceasta, va trebui să creaţi directorul /etc/portage (dacă nu există, deja) şi să editaţi /etc/portage/package.use.

Spre exemplu, dacă nu doriţi ca berkdb suportat global dar îl doriţi pentru mysql, trebuie să adăugaţi:

Cod 2.3: exemplu /etc/portage/package.use

dev-db/mysql berkdb

Bineînţeles, Puteţi, de asemenea, să dezactivaţi indicatori USE pentru o anumită aplicaţie. Spre exemplu, dacă nu doriţi suport java în PHP:

Cod 2.4: a doilea exemplu /etc/portage/package.use

dev-php/php -java

Declararea temporară a indicatorilor USE

Uneori doriţi să setaţi un anumit indicator USE, doar o singură dată. În locul editării /etc/make.conf de două ori (pentru a seta şi a reseta modificările USE) puteţi doar să declaraţi variabila USE ca variabilă de mediu. Amintiţi-vă că, dacă reinstalaţi sau actualizaţi o aplicaţie (fie explicit sau ca urmare a unei actualizări a sistemului) modificările dvs. se vor pierde!

Ca exemplu, vom elimina temporar java din setarea USE în timpul instalării mozilla.

Cod 2.5: Utilizarea USE ca variabilă de mediu

# USE="-java" emerge mozilla

Indicatorii USE Automaţi

După ce anumite pachete sunt instalate, unii indicatori USE adiţionali vor fi activaţi automat pentru dvs. dacă nu îi dezactivaţi în mod explicit. Pentru a vizualiza o listă cu pachetele care furnizează indicatori USE, verificaţi /etc/make.profile/use.defaults şi fişierele use.defaults din profilele superioare:

Cod 2.6: Un scurt extras din /etc/make.profile/use.defaults

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Precendenţă

Desigur, există o anume precendenţă asupra cărei setări are prioritate peste setarea USE. Nu doriţi declararea USE="-java" doar pentru a observa că java este definit oricum din cauza unei setări ce are o prioritate mai mare. Precedenţa pentru setarea USE este, ordonată după prioritate (primul are cea mai mică prioritate):

  1. Setarea USE implictă declarată în fişierele make.defaults conţinute în profilul dvs.
  2. Setarea USE moştenită dacă un pachet din use.defaults este instalat
  3. Setarea USE definită de utilizator în /etc/make.conf
  4. Setarea USE definită de utilizator în /etc/portage/package.use
  5. Setarea USE definită de utilizator ca variabilă de mediu

Pentru a vizualiza setarea USE finală aşa cum este interpretată de Portage, rulaţi emerge --info. Aceasta va afişa toate variabilele relevante (incluzând variabila USE) cu conţinutul utilizat de Portage.

Cod 2.7: Rularea emerge --info

# emerge --info

Adaptarea Întregului Sistem la Noii Indicatori USE

Dacă aţi modificat indicatorii USE şi doriţi să vă actualizaţi întregul sistem în scopul de a utiliza noii indicatori USE, utilizaţi opţiunea --newuse pentru emerge:

Cod 2.8: Recompilarea întregului sistem

# emerge --update --deep --newuse world

Apoi, rulaţi proprietarea depclean a Portage pentru a îndepărta dependenţele condiţionale ce au fost compilate pe sistemul "vechi" dar au fost scoase din uz de către noii indicatori USE.

Atenţie: Rularea emerge --depclean este o operaţie riscantă şi ar trebui să fie efectuată cu grijă. Verificaţi de cel puţin două ori listă afişată de pachete "vechi" pentru a vă asigura că nu vor fi şterse pachete necesare. În următorul exemplu vom adăuga parametrul -p pentru ca depclean doar să afişeze lista de pachete fără a le şterge.

Cod 2.9: Ştergerea pachetelor vechi

# emerge -p --depclean

Când operaţia depclean s-a terminat, rulaţi revdep-rebuild pentru a reconstrui aplicaţiile care sunt legate dinamic de obiectele partajate din pachetele şterse. revdep-rebuild este o componentă a pachetului gentoolkit; nu uitaţi să-l instalaţi, mai întâi.

Cod 2.10: Rularea revdep-rebuild

# revdep-rebuild

Când totul s-a terminat, sistemul dvs. va utiliza noile setări ale indicatorilor USE.

2.c. Indicatori USE specifice pachetelor

Vizualizarea indicatorilor USE disponibili

Să luăm ca exemplu mozilla: ce indicatori USE utilizează? Pentru a afla, utilizăm emerge cu opţiunile --pretend şi --verbose:

Cod 3.1: Vizualizarea indicatorilor USE utilizaţi

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB

emerge nu este singurul utilitar pentru această acţiune. De fapt, avem un utilitar dedicat informaţiilor despre pachete numit equery ce se află în pachetul gentoolkit. Mai întâi instalaţi gentoolkit:

Cod 3.2: Instalarea gentoolkit

# emerge gentoolkit

Acum, rulaţi equery cu argumentul uses pentru a vizualiza indicatorii USE ai unui pachet anume. Spre exemplu, pentru pachetul gnumeric:

Cod 3.3: Folosirea equery pentru a vizualiza indicatorii USE utilizaţi

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

3. Particularităţile Portage

3.a. Caracteristici Portage

Portage are unele caracteristici în plus ce transformă experienţa dvs. Gentoo într-una şi mai bună. Multe din aceste caracteristici se bazează pe anumite utilitare ce ajută la îmbunătăţirea performanţei, stabilitatea, securitatea, ...

Pentru a dezactiva anumite caracteristici ale Portage, trebuie să editaţi variabila FEATURES din /etc/make.conf, ce conţine unele cuvinte cheie cu caracteristici separate de spaţii goale. În unele cazuri, va trebui, de asemenea, să instalaţi utilitarul adiţional pe care se bazează respectiva caracteristică.

Nu toate caracteristicile Portage suportate sunt explicate aici. Pentru informaţii mai detaliate, vă rugăm să consultaţi pagina de manual make.conf:

Cod 1.1: Consultarea paginii de manual make.conf

$ man make.conf

Pentru a afla ce caracteristici sunt setate implicit prin intermediul FEATURES, rulaţi emerge --info şi căutaţi definiţia variabilei FEATURES sau utilizaţi grep:

Cod 1.2: Afişarea caracteristicilor deja setate în FEATURES

$ emerge --info | grep FEATURES

3.b. Compilarea Distribuită

Utilizarea distcc

distcc este un program pentru distribuirea compilărilor peste mai multe, nu neapărat identice, maşini din reţea. Clientul distcc trimite toată informaţia necesară serverelor distcc disponibile (ce rulează distccd) pentru a compila bucăţi din codul sursă pentru client. Rezultatul net este un timp de compilare mai rapid.

Puteţi afla mai multe informaţii despre distcc (şi cum să îl utilizaţi cu Gentoo) în Documentaţia Gentoo pentru Distcc.

Instalarea distcc

Distcc conţine o aplicaţie grafică pentru monitorizarea sarcinilor trimise de sistemul dvs. în vederea compilării. Dacă utilizaţi Gnome, atunci adăugaţi 'gnome' în variabila dvs. USE. Totuşi, dacă nu utilizaţi Gnome şi doriţi în continuare să rulaţi aplicaţia de monitorizare, adăugaţi 'gtk' variabilei dvs. USE.

Cod 2.1: Instalarea distcc

# emerge distcc

Activarea Suportului în Portage

Adăugaţi distcc variabilei FEATURES din /etc/make.conf. Apoi, editaţi variabila MAKEOPTS după preferinţe. O soluţie bună este să completaţi "-jX", unde X este numărul de procesoare ce rulează distccd (incluzând maşina curentă) plus unu, dar este posibil să obţineţi rezultate mai bune cu alte numere.

Acum, rulaţi distcc-config şi introduceţi lista de servere distcc disponibile. Pentru un exemplu simplu, vom presupune că serverele DistCC sunt 192.168.1.102 (maşina curentă), 192.168.1.103 şi 192.168.1.104 (două maşini "la distanţă"):

Cod 2.2: Configurarea distcc pentru utilizarea a trei servere distcc

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Nu uitaţi să rulaţi aplicaţia daemon distccd, de asemenea:

Cod 2.3: Pornirea aplicaţiilor daemon distccd

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Utilizarea unui Cache pentru Compilare

Despre ccache

ccache este o aplicaţie de cache pentru compilare. Când compilaţi un program, acesta va salva în cache rezultatele intermediare astfel încât, de câte ori recompilaţi acelaşi program, timpul de compilare este redus foarte mult. În cazurile comune de compilare, aceasta poate avea ca rezultat timpi de 5 până la 10 ori mai reduşi.

Dacă sunteţi interesat în detalii despre ccache, vă rugăm să vizitaţi pagina oficială ccache.

Instalarea ccache

Pentru a instala ccache, rulaţi emerge ccache:

Cod 3.1: Instalarea ccache

# emerge ccache

Activarea Suportului în Portage

Deschideţi /etc/make.conf şi adăugaţi ccache în variabila FEATURES. Apoi, adăugaţi o nouă variabilă numită CCACHE_SIZE şi setaţi-o cu valoarea "2G":

Cod 3.2: Editarea CCACHE_SIZE în /etc/make.conf

CCACHE_SIZE="2G"

Pentru a verifica dacă ccache funcţionează, interogaţi ccache în scopul afişării statisticilor proprii. Deoarece Portage utilizează un director diferit, trebuie să setaţi, de asemenea, variabila CCACHE_DIR.

Cod 3.3: Vizualizarea statisticilor ccache

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Locaţia /var/tmp/ccache este locaţia implicită pentru ccache a Portage; dacă doriţi să modificaţi această setare, trebuie să setaţi variabila CCACHE_DIR în /etc/make.conf.

În schimb, dacă aţi dori să rulaţi ccache, acesta ar utiliza locaţia implicită ${HOME}/.ccache, acesta fiind motivul pentru care a trebuit să setaţi variabila CCACHE_DIR când aţi interogat ccache (din Portage) pentru statistici.

Utilizarea ccache pentru Compilarea C în afara Portage

Dacă doriţi să utilizaţi ccache pentru compilări în afara Portage, adăugaţi /usr/lib/ccache/bin la începutul variabilei PATH (înainte de /usr/bin). Aceasta poate fi obţinută prin editarea fişierului /etc/env.d/00basic, ce este primul fişier de mediu ce defineşte variabila PATH.

Cod 3.4: Editarea /etc/env.d/00basic

PATH="/usr/lib/ccache/bin:/opt/bin"

3.d. Suportul pentru Pachete Binare

Crearea Pachetelor Precompilate

Portage suportă instalarea de pachete precompilate. Deşi Gentoo însăşi nu oferă pachete precompilate (cu excepţia versiunilor snapshot de GRP), Portage poate fi configurat pentru a face uz de prezenţa pachetelor precompilate.

Pentru a crea un pachet precompilat, puteţi utiliza quickpkg dacă pachetul este deja instalat în sistemul dvs, sau emerge cu opţiunile --buildpkg sau --buildpkgonly.

Dacă doriţi ca Portage să creeze pachete precompilate pentru fiecare pachet pe care doriţi să-l instalaţi, adăugaţi buildpkg ca valoare pentru variabila FEATURES.

Mai mult suport pentru crearea de pachete precompilate poate fi obţinut cu catalyst. Pentru mai multe informaţii despre catalyst, citiţi Manualul de Referinţă Catalyst şi Întrebări Frecvente despre Catalyst.

Instalarea Pachetelor Precompilate

Deşi Gentoo nu oferă, puteţi crea un repozitoriu central unde să stocaţi pachetele precompilate. Dacă doriţi să utilizaţi acest repozitoriu, trebuie să configuraţi Portage să îl utilizeze prin setarea variabilei PORTAGE_BINHOST cu valoarea indicând spre acesta. Spre exemplu, dacă pachetele precompilate sunt pe ftp://buildhost/gentoo:

Cod 4.1: Setarea PORTAGE_BINHOST în /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Când doriţi să instalaţi un pachet precompilat, adăugaţi opţiunea --getbinpkg comenzii emerge împreună cu opţiunea --usepkg. Prima opţiune îi specifică aplicaţiei emerge să descarce pachetul precompilat de pe serverul definit anterior în timp ce a doua opţiune îi specifică să încerce să instaleze pachetul precompilat mai întâi, înainte de a descărca sursele şi a le compila.

Spre exemplu, pentru a instala gnumeric cu pachete precompilate:

Cod 4.2: Instalarea pachetului precompilat gnumeric

# emerge --usepkg --getbinpkg gnumeric

Mai multe informaţii despre opţiunile emerge legate de pachete, pot fi găsite în pagina de manual pentru emerge:

Cod 4.3: Consultarea paginii de manual pentru emerge

$ man emerge

4. Script-urile de Iniţializare

4.a. Nivele de execuţie

Pornirea Sistemului

La procesul de boot al sistemului, veţi observa mult text defilând. Dacă acordaţi o mică atenţie, veţi observa că acest text este acelaşi de fiecare dată când reporniţi sistemul. Secvenţa tuturor acestor acţiuni este denumită secvenţa de boot şi este (mai mult sau mai puţin) definită static.

Mai întâi, aplicaţia boot loader va încărca imaginea de kernel, definită în configurarea acesteia, în memorie după ce-i specifică CPU-ului să ruleze kernel-ul. Când kernel-ul este încărcat şi rulează, acesta iniţializează toate structurile şi sarcinile specifice kernel-ului şi rulează procesul init.

Apoi, acest proces se asigură că toate sistemele de fişiere (definite în /etc/fstab) sunt mount-ate şi gata de utilizare. Apoi, execută unele script-uri localizate în /etc/init.d, care vor porni serviciile necesare pentru a avea un sistem ce a trecut cu succes procesului de boot.

În final, când toate script-urile sunt executate, init activează terminalele (în majoritatea cazurilor doar consolele virtuale ce se ascund în spatele combinaţiilor Alt-F1, Alt-F2, etc.) ataşându-le un proces special numit agetty. Acest proces va asigura procesul de login prin intermediul acestor terminale prin rularea login.

Script-uri de Iniţializare

Acum, init nu doar execută script-urile din /etc/init.d în mod aleator. Mai mult, nu rulează toate script-urile din /etc/init.d, ci doar script-urile care îi sunt specificate spre execuţie. El decide ce script-uri sa execute prin analizarea /etc/runlevels.

Mai întâi, init rulează script-urile din /etc/init.d ce au link-uri simbolice în /etc/runlevels/boot. De obicei, va rula script-urile în ordine alfabetică, dar unele script-uri conţin informaţii despre dependenţe, specificând sistemului că un alt script trebuie rulat înainte ca ele să fie pornite.

Când sunt executate toate script-urile ce deţin referinţe în /etc/runlevels/boot, init va continua să ruleze script-uri ce au link-uri simbolice spre ele în /etc/runlevels/default. Din nou, va utiliza ordinea alfabetică pentru a decide ce script să ruleze mai întâi, doar dacă un script conţine o informaţie despre dependenţe, caz în care ordinea este schimbată pentru a oferi o secvenţă de pornire validă.

Cum Funcţionează Init

Bineînţeles, init nu decide totul singur. El necesită un fişier de configurare ce specifică ce acţiuni trebuie să întreprindă. Acest fişier de configurare este /etc/inittab.

Dacă vă amintiţi secvenţa de boot ce tocmai am descris-o, vă veţi aminti că prima acţiune a init este mount-area tuturor sistemelor de fişiere. Acest lucru este definit în următoarea linie din /etc/inittab:

Cod 1.1: Linia de iniţializare a sistemului din /etc/inittab

si::sysinit:/sbin/rc sysinit

Această linie îi specifică aplicaţiei init faptul că trebuie să ruleze /sbin/rc sysinit pentru a iniţializa sistemul. Script-ul /sbin/rc are ca scop iniţializarea sistemului, deci aţi putea afirma că init nu execută prea multe acţiuni -- el delegă sarcina de iniţializare a sistemului altui proces.

Apoi, init execută toate script-urile ce au conţinute link-uri simbolice în /etc/runlevels/boot. Această acţiune este definită de următoare linie:

Cod 1.2: Iniţializarea sistemului, continuată

rc::bootwait:/sbin/rc boot

Din nou, script-ul rc execută sarcinile necesare. Notaţi că opţiunea transferată lui rc (boot) este aceeaşi ca subdirectorul din /etc/runlevels ce este utilizat.

Acum, init îşi verifică fişierul de configurare pentru a analiza ce nivel de execuţie să ruleze. Pentru a decide această acţiune, citeşte următoarea linie din /etc/inittab:

Cod 1.3: Linia initdefault

id:3:initdefault:

În acest caz (pentru care majoritatea utilizatorilor Gentoo îl vor folosi), identificatorul nivelului de execuţie este 3. Utilizând această informaţie, init verifică ceea ce trebuie să ruleze pentru a porni nivelul de execuţie 3:

Cod 1.4: Definiţiile nivelului de execuţie

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

Linia ce defineşte nivelul 3, din nou, utilizează script-ul rc pentru a porni serviciile (acum cu argumentul default). Din nou, notaţi că argumentul lui rc este acelaşi ca subdirectorul din /etc/runlevels.

Când rc este terminat, init decide ce console virtuale să activeze şi ce comenzi trebuie rulate pentru fiecare consolă:

Cod 1.5: Definirea consolelor virtuale

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Ce este un nivel de execuţie?

Aţi observat că init utilizează o schemă de numerotare pentru a decide ce nivel de execuţie trebuie să activeze. Un nivel de execuţie este un stadiu în care sistemul rulează şi conţine o colecţie de script-uri (scripturi de nivele de execuţie sau initscipt-uri) ce trebuie executate când intraţi în sau ieşiţi dintr-un nivel de execuţie.

În Gentoo, există şapte nivele de execuţie: trei nivele de execuţie interne, şi patru nivele de execuţie definite de utilizatori. Nivelele interne sunt denumite sysinit, shutdown şi reboot şi execută acelaşi lucru ca numele lor: iniţializarea sistemului, oprirea sistemului, repornirea sistemului.

Nivelele de execuţie definite de utilizator sunt cele ce sunt localizate în subdirectorul /etc/runlevels: boot, default, nonetwork şi single. Nivelul de execuţie boot rulează toate serviciile necesare sistemului utilizate de toate celelalte nivele de execuţie. Cele trei nivele de execuţie diferă prin serviciile care le pornesc: default este pentru utilizarea zilnică, nonetwork este utilizat în cazul în care nu este necesară conectivitatea reţelei şi single este utilizat când se repară sistemul.

Utilizarea Script-urilor de Iniţializare

Script-urile pe care procesul rc le porneşte sunt denumite script-uri de iniţializare. Fiecare script în /etc/init.d poate fi executat cu argumentele start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme sau broken.

Pentru a porni, opri sau reporni un serviciu (şi toate serviciile dependente), trebuie utilizaţi parametrii start, stop şi restart:

Cod 1.6: Pornirea Postfix

# /etc/init.d/postfix start

Notă: Doar serviciile ce necesită serviciul dat prin declaraţia need sunt oprite sau repornite. Alte servicii dependente (cele care depind prin declaraţia use de serviciu dar nu îl necesită) nu sunt afectate.

Dacă doriţi să opriţi un serviciu, dar nu şi serviciile ce depind de el, puteţi utiliza argumentul pause:

Cod 1.7: Oprirea Postfix dar păstrarea serviciilor dependente pornite

# /etc/init.d/postfix pause

Dacă doriţi să analizaţi în ce stadiu se află un serviciu (în starea started, stopped, paused, ...) puteţi utiliza argumentul status:

Cod 1.8: Informaţia despre starea serviciului postfix

# /etc/init.d/postfix status

Dacă informaţia de stare precizează că serviciul rulează, dar ştiţi sigur că nu rulează, puteţi reseta informaţia de stare ca "stopped" cu argumentul zap:

Cod 1.9: Resetarea informaţiei de stare pentru postfix

# /etc/init.d/postfix zap

Pentru a interoga în scopul vizualizării dependenţelor unui serviciu, puteţi utiliza iuse sau ineed. Cu ineed puteţi vizualiza serviciile ce chiar sunt necesare pentru funcţionarea corectă a serviciului. Pe de altă parte iuse afişează serviciile ce pot fi folosite de serviciu, dar nu sunt necesare pentru funcţionarea corectă.

Cod 1.10: Interogarea în scopul obţinerii unei liste de servicii de care depinde Postfix

# /etc/init.d/postfix ineed

În mod similar, puteţi interoga în scopul obţinerii serviciilor ce necesită serviciul (needsme) sau îl pot utiliza (usesme):

Cod 1.11: Interogarea în scopul vizualizării unei liste a tuturor serviciilor ce necesită Postfix

# /etc/init.d/postfix needsme

În final, puteţi interoga în scopul vizualizării dependenţelor lipsă a unui serviciu:

Cod 1.12: Interogarea în scopul obţinerii lista dependenţelor lipsă pentru Postfix

# /etc/init.d/postfix broken

4.b. Utilizarea rc-update

Ce este rc-update?

Sistemul de iniţializare Gentoo utilizează o structură de dependenţe pentru a decide ce servicii trebuie să fie pornite mai întâi. Cum, aceasta este o sarcină plictisitoare pentru care nu am dori ca utilizatorii noştri să o seteze manual, am creat utilitare ce facilitează administrarea nivelelor de execuţie şi script-urilor de iniţializare.

Cu ajutorul rc-update puteţi adăuga şi scoate script-uri de iniţializare pentru un nivel de execuţie. Utilitarul rc-update va interoga automat script-ul depscan.sh pentru a reconstrui structura de dependenţe.

Adăugarea şi Ştergerea de Servicii

Deja aţi adăugat script-uri de iniţializare nivelului de execuţie "default" în timpul instalării Gentoo. La acea vreme, probabil că nu înţelegeaţi ce reprezintă "default", dar acum ar trebui. Script-ul rc-update necesită un al doilea argument ce defineşte acţiunea: add (adăugare), del (ştergere) sau show (vizualizare).

Pentru a adăuga sau a şterge un script de iniţializare, trebuie doar să pasaţi argumentul add sau del, urmat de script-ul de iniţializare şi de nivelul de execuţie. Spre exemplu:

Cod 2.1: Ştergerea Postfix din nivelul de execuţie default

# rc-update del postfix default

Comanda rc-update show va afişa toate script-urile de iniţializare şi în ce nivele de execuţie vor fi rulate:

Cod 2.2: Receiving init script information

# rc-update show

4.c. Configurarea Serviciilor

De ce Nevoia pentru Configurări Suplimentare?

Script-urile de iniţializare pot fi destul de complexe. De aceea, nu este de dorit ca utilizatorii să editeze script-ul de iniţializare direct, deoarece ar fi mai expus spre erori. Este, cu toate acestea, important să puteţi să configuraţi un asemenea serviciu. Spre exemplu, aţi putea adăuga mai multe opţiuni serviciului în sine.

Un al doilea motiv pentru a avea această configuraţie separat script-ului de iniţializare este să poată actualiza script-urile de iniţializare fără să aibă grija faptului că modificările în configuraţia dvs. vor fi refăcute.

Directorul /etc/conf.d

Gentoo oferă o cale uşoară de a configura un asemenea serviciu: fiecare script de iniţializare ce poate fi configurat are un fişier în /etc/conf.d. Spre exemplu, script-ul de iniţializare apache2 (denumit /etc/init.d/apache2) are un fişier de configurare denumit /etc/conf.d/apache2, ce poate conţine opţiunile ce doriţi să le pasaţi aplicaţiei server Apache 2 în momentul în care este pornit:

Cod 3.1: Variabilă definită în /etc/conf.d/apache2

APACHE2_OPTS="-D PHP4"

Un asemenea fişier de configurare conţine variabile şi numai variabile (exact ca în cazul /etc/make.conf), facilitând configurarea serviciilor. De asemenea, permite oferirea unor informaţii mai detaliate în despre variabile (sub forma comentariilor).

4.d. Scrierea de Script-uri de Iniţializare

Chiar Trebuie?

Nu, scrierea unui script de iniţializare nu este, de obicei, necesară, deoarece Gentoo oferă script-uri de iniţializare gata-de-utilizare pentru toate serviciile oferite. În orice caz, puteţi avea instalat un serviciu fără a fi utilizat Portage, caz în care veţi dori să creaţi un script de iniţializare.

Nu utilizaţi un script de iniţializare oferit de un serviciu dacă nu este scris explicit pentru Gentoo: Script-urile de iniţializare din Gentoo nu sunt compatibile cu script-urile de iniţializare din alte distribuţii!

Schema

Schema de bază pentru un script de iniţializare poate fi vizualizată mai jos.

Cod 4.1: Schema de bază pentru un script de iniţializare

#!/sbin/runscript

depend() {
  (Informaţia despre dependenţe)
}

start() {
  (Comenzi necesare pentru a porni serviciul)
}

stop() {
  (Comenzi necesare pentru a opri serviciul)
}

restart() {
  (Comenzi necesare pentru a reporni serviciul)
}

Orice script de iniţializare necesită definirea funcţiei start. Toate celelalte secţiuni sunt opţionale.

Dependendenţe

Există două dependenţe ce le puteţi defini: use şi need. Aşa cum am menţionat anterior, dependenţa need este mai strictă decât dependenţa use. Urmărind acest tip de dependenţă puteţi manipula serviciul de care depindeţi, sau dependenţa virtuală.

O dependenţă virtuală este o dependenţă oferită de un serviciu, dar nu este oferită doar de acel serviciu. Script-ul dvs. de iniţializare poate depinde de o aplicaţie de tip logger de sistem, dar sunt multe aplicaţii de acest tip disponibile (metalogd, syslog-ng, sysklogd, ...). Cum, nu puteţi depinde de fiecare din acestea prin declaraţia need (nici un sistem nu are toate aplicaţiile de tip logger de sistem instalate si rulând), ne asigurăm că toate aceste servicii oferă prin declaraţia provide o dependenţă virtuală.

Să aruncăm o privire asupra informaţiilor despre dependenţe pentru serviciul postfix.

Cod 4.2: Informaţia despre dependenţe pentru Postfix

depend() {
  need net
  use logger dns
  provide mta
}

După cum observaţi, serviciul postfix:

  • Necesită dependenţa (virtuală) net (ce este oferită, spre exemplu, de /etc/init.d/net.eth0)
  • utilizează dependenţa (virtuală) logger (care este oferită, spre exemplu, de /etc/init.d/syslog-ng)
  • utilizează dependenţa (virtuală) dns (care este oferită, spre exemplu, de /etc/init.d/named)
  • oferă dependenţa (virtuală) mta (ce este comună pentru toate aplicaţiile de tip server de mail)

Controlarea Ordinii

În unele cazuri, nu veţi dori să cereţi rularea unui serviciu, dar veţi dori ca serviciul dvs. să fie pornit înaintea altui serviciu, prin declararea before (sau înaintea, prin declararea after) doar dacă este disponibil în sistem (notaţi condiţia - aceasta nu mai reprezintă dependenţă) şi dacă rulează în acelaşi nivel de execuţie (notaţi condiţia - pot fi invocate doar serviciile din acelaşi nivel de execuţie). Puteţi oferi această informaţie utilizând setările before sau after.

Ca exemplu, vom vizualiza setările serviciului Portmap:

Cod 4.3: Funcţia depend() în serviciul Portmap

depend() {
  need net
  before inetd
  before xinetd
}

Puteţi utiliza generalizarea "*" pentru a invoca toate serviciile din acelaşi nivel de execuţie, deşi nu este indicat.

Cod 4.4: Rularea unui script de iniţializare ca fiind primul script din nivelul de execuţie

depend() {
  before *
}

Funcţii Standard

Alături de funcţionalitatea depend(), puteţi avea nevoie să definiţi funcţia start(). Aceasta conţine toate comenzile necesare pentru a iniţializa serviciul. Este indicat să utilizaţi funcţiile ebegin şi eend pentru a informa utilizatorul asupra a ceea ce se întâmplă:

Cod 4.5: Exemplu pentru funcţia start()

start() {
  ebegin "Starting my_service"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Dacă doriţi mai multe exemple ale funcţiei start(), vă rugăm să citiţi codul sursă disponibil în script-urile de iniţializare din directorul /etc/init.d. Cât despre start-stop-daemon, există o excelentă pagină de manual disponibilă dacă doriţi informaţii suplimentare:

Cod 4.6: Afişarea paginii de manual pentru start-stop-daemon

# man start-stop-daemon

Alte funcţii ce le puteţi defini sunt: stop() şi restart(). Nu sunteţi obligat să definiţi aceste funcţii! Sistemul nostru de iniţializare este destul de inteligent pentru a completa aceste funcţii singur dacă utilizaţi start-stop-daemon.

Sintaxa script-urilor de iniţializare din Gentoo este bazată pe Bourne Again Shell (bash), deci puteţi utiliza construcţii compatibile cu bash în interiorul script-ului de iniţializare.

Adăugarea de Opţiuni Personalizate

Dacă doriţi ca script-urile de iniţializare să suporte mai multe funcţii decât cele deja definite, va trebui să adăugaţi variabila opts şi să creaţi o funcţie cu acelaşi nume ca opţiunea. Spre exemplu, pentru a suporta o opţiune numită restartdelay:

Cod 4.7: Suportarea opţiunii restartdelay

opts="${opts} restartdelay"

restartdelay() {
  stop
  sleep 3    # Wait 3 seconds before starting again
  start
}

Variabilele de Configurare pentru Serviciu

Nu trebuie să întreprindeţi nimic pentru a suporta un fişier de configurare în /etc/conf.d: dacă script-ul de iniţializare este executat, următoarele fişiere sunt interpretate automat (spre ex. variabilele sunt disponibile spre utilizare):

  • /etc/conf.d/<your init script>
  • /etc/conf.d/basic
  • /etc/rc.conf

De asemenea, dacă script-ul dvs. de iniţializare oferă o dependenţă virtuală (cum ar fi net), fişierul asociat cu acea dependenţă (cum ar fi /etc/conf.d/net) va fi interpretat, de asemenea.

4.e. Schimbarea Comportamentului Nivelului de Execuţie

Cine ar putea beneficia de această funcţionalitate?

Mulţi utilizatori de laptop cunosc situaţia: acasă trebuie să pornească net.eth0, în timp ce în timpul călătoriei nu doresc să pornească net.eth0 (deoarece reţeaua nu este disponibilă). Cu Gentoo, puteţi modifica comportamentul nivelului de execuţie în concordanţă cu nevoile proprii.

Spre exemplu, puteţi crea un al doilea nivel de execuţie "default" în care să porniţi şi care are atribuite alte script-uri de iniţializare. Puteţi selecta la boot ce nivel de execuţie implicit să utilizaţi.

Utilizarea softlevel

Mai întâi de toate, creaţi un director corespunzător nivelului de execuţie pentru cel de-al doilea nivel de execuţie "default" al dvs. Ca un exemplu, putem crea nivelul de execuţie offline:

Cod 5.1: Crearea unui director corespunzător unui nivel de execuţie

# mkdir /etc/runlevels/offline

Adăugaţi script-urile de iniţializare noilor create nivele de execuţie. Spre exemplu, dacă doriţi să aveţi o copie exactă a nivelului de execuţie default, dar fără net.eth0:

Cod 5.2: Adăugarea script-urilor de iniţializare necesare

(Copiaţi toate serviciile din nivelul default în nivelul offline)
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Ştergeţi serviciile nedorite din nivelul offline)
# rc-update del net.eth0 offline
(Afişaţi serviciile active din nivelul offline)
# rc-update show offline
(Exemplu de afişare parţial)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Acum, editaţi configurarea aplicaţiei bootloader şi adăugaţi o nouă intrare pentru nivelul de execuţie offline. Spre exemplu, în /boot/grub/grub.conf:

Cod 5.3: Adăugarea unei intrări pentru nivelul de execuţie offline

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

Iată că totul este setat, acum. Dacă veţi porni sistemul şi selecta noua intrare la boot, nivelul de execuţie offline va fi rulat în locul celui implicit, default.

Utilizarea bootlevel

Utilizarea bootlevel este complet analoagă cu cea softlevel. Singura diferenţă este că definiţi un nou nivel de execuţie "boot" în loc să definiţi un al doilea nivel "default".

5. Variabile de Mediu

5.a. Variabile de Mediu?

Ce sunt ele

O variabilă de mediu este un obiect cu nume propriu, care conţine informaţii folosite de una sau mai multe aplicaţii. Mulţi utilizatori (în special cei noi sistemului Linux) consideră asta ca fiind un pic cam ciudat, sau chiar de nestăpânit. Acest concept este greşit: folosind o variabilă de mediu, se poate schimba cu uşurinţă configuraţia uneia sau mai multor aplicaţii.

Example Importante

Următorul tabel listează un număr de variabile folosite de sistemul Linux şi descrie modul lor de folosire. Ca exemplu, sunt prezentate câteva valori pentru aceste variabile după tabel.

Variabilă Descriere
PATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde sistemul dumneavoastră caută fişierele executabile. Dacă introduceţi numele unui executabil (cum ar fi ls, rc-update sau emerge) dar acesta nu se află într-un director specificat, sistemul dumneavoastră nu-l va executa (decât dacă introduceţi locaţia completă, precum /bin/ls).
ROOTPATH Această variabilă este asemănătoare comenzii PATH, doar că listează directoarele ce trebuie verificate atunci când user-ul 'root' introduce o comandă.
LDPATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde linker-ul dinamic caută pentru a găsi o librărie.
MANPATH Această variabilă conţine o listă de directoare, separate prin virgulă, unde comanda man caută paginile de manual
INFODIR Această variabilă conţine o listă de directoare, separate prin virgulă, unde comanda info caută paginile info.
PAGER Această variabilă conţine calea către programul folosit pentru a lista conţinutul fişierelor (cum ar fi less sau more)
EDITOR Această variabilă conţine calea către programul folosit pentru a schimba conţinutul fişierelor (cum ar fi nano sau vi)
KDEDIRS Această variabilă conţine o listă de directoare, separate prin virgulă, ce conţin materiale specifice KDE.
CLASSPATH Această variabilă conţine o listă de directoare, separate prin virgulă, ce conţin clase Java.
CONFIG_PROTECT Această variabilă conţine o listă delimitată de caracterul spaţiu a directoarelor ce trebuie protejate de Portage în timpul actualizărilor.
CONFIG_PROTECT_MASK Această variabilă conţine o listă delimitată de caracterul spaţiu a directoarelor ce nu trebuie protejate de Portage în timpul actulizărilor.

Mai jos veţi găsi un exemplu de definire pentru toate variabilele:

Cod 1.1: Definiţii exemplu

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Definirea Variabilelor Globale

Directorul /etc/env.d

Pentru a centraliza definiţiile acestor variabile, Gentoo introduce directorul /etc/env.d. În acest director veţi găsi unele fişiere, precum 00basic, 05gcc, etc. care conţin variabilele necesare pentru aplicaţiile menţionate în nume.

De exemplu, când aţi instalat gcc, un fişier numit 05gcc a fost creat de către ebuild şi conţine definiţiile următoarelor variabile:

Cod 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Alte distribuţii vă spun să schimbaţi sau să definiţi astfel de variabile de mediu în /etc/profile sau alte locaţii. Gentoo, pe de altă parte, uşurează (atât pentru dumneavoastră cât şi pentru portage) mentenanţa acestor variabile fără a trebui să acordaţi atenţie fişierelor numeroase ce pot conţine variabile de mediu.

De exemplu, când gcc este actualizat, fişierul /etc/env.d/05gcc este actualizat fără a necesita interacţiunea cu utilizatorul.

Acesta nu este un beneficiu numai pentru Portage, dar şi pentru dumneavoastră, ca utilizator. Ocazional, este posibil să vi se ceară să setaţi o anumită variabilă de mediu globală pentru tot sistemul. Ca exemplu, luăm variabila http_proxy. În loc să vă încurcaţi cu /etc/profile, puteţi crea un fişier nou (/etc/env.d/99local) unde să definiţi variabilele de care aveţi nevoie:

Cod 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Prin folosirea unui singur fişier în care păstraţi toate variabilele dumneavoastră, puteţi avea acces rapid la variabilele definite de dumneavoastră.

Script-ul env-update

Mai multe fişiere din /etc/env.d definesc variabila PATH. Aceasta nu este greşit: când rulaţi env-update, va adăuga un număr de definiţii înainte de a actualizarea variabilele de mediu, facilitând pachetelor (sau utilizatorilor) adăugarea propriilor variabile fără alterarea valorilor deja existente.

Script-ul env-update va adăuga valorile în ordine alfabetică, conform fişierelor din /etc/env.d. Fişierele trebuie să înceapă cu două cifre zecimale.

Cod 2.3: Ordinea actualizării utilizată de env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Concatenarea variabilelor nu se întâmplă în toate cazurile, ci doar pentru următoarele variabile: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH şi PRELINK_PATH_MASK. Pentru toate celelalte variabile, ultima valoare definită (în ordinea alfabetică a fişierelor din /etc/env.d) este cea utilizată.

Când rulaţi env-update, script-ul va genera toate variabilele de mediu, şi le va plasa în /etc/profile.env (care este utilizat de /etc/profile). De asemenea, va extrage informaţiile din variabila LDPATH şi le va folosi pentru a crea fişierul/etc/ld.so.conf. Apoi, va rula ldconfig pentru a recrea /etc/ld.so.cache, folosit de linker-ul dinamic.

Dacă doriţi să observaţi consecinţele env-update imediat după ce îl rulaţi, executaţi următoarea comandă pentru a actualiza mediul. Utilizatorii care au instalat ei înşişi Gentoo, îşi vor aminti de aceste instrucţiuni din timpul instalării:

Cod 2.4: Actualizarea mediului

# env-update && source /etc/profile

Notă: Comanda de mai sus actualizează doar variabilele din terminalul curent, consolele noi şi procesele fiu ale acestora. Astfel, dacă lucraţi în X11, va trebui, fie să tastaţi source /etc/profile în fiecare terminal nou pe care-l deschideţi, sau să reporniţi aplicaţia X pentru ca toate terminalele să încarce noile variabile. Dacă utilizaţi un manager de login, trebuie să tastaţi ca root /etc/init.d/xdm restart. Dacă nu, va trebui să efectuaţi logout şi apoi să vă autentificaţi din nou pentru ca X să poată crea procese fiu cu valorile noilor variabile.

5.c. Definirea Variabilelor Local

Specific User-ilor

Nu întotdeauna este dorită definirea globală a variabilelor de mediu. De exemplu, s-ar putea să doriţi să adăugaţi /home/my_user/bin, precum şi directorul curent de lucru (directorul în care vă aflaţi) la variabila PATH, dar nu doriţi ca toţi user-ii sistemului să o aibă definită în variabila lor PATH. Dacă doriţi să definiţi o variabilă de mediu local trebuie să folosiţi ~/.bashrc sau ~/.bash_profile:

Cod 3.1: Extinderea variabilei PATH pentru folosire locală în ~/.bashrc

(Două puncte urmate de nici un director sunt tratate ca directorul curent de lucru
PATH="${PATH}:/home/my_user/bin:"

Când efectuaţi din nou acţiunea de login, variabila dumneavoastră PATH va fi actualizată.

Specific Sesiunii

Uneori, sunt necesare definiţii şi mai stricte. Poate doriţi să puteţi folosi executabilele dintr-un director temporar, creat de dumneavoastră (fără a folosi calea către executabile sau prin editarea ~/.bashrc) pentru timpul scurt în care aveţi nevoie de ele.

În acest caz, puteţi defini variabila PATH în sesiunea curentă folosind comanda export. Cât timp nu efectuaţi log out, variabila PATH va folosi aceste setări temporare.

Cod 3.2: Definirea unei variabile de mediu specifice sesiunii

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. Utilizarea Portage

1. Fişiere şi Directoare

1.a. Fişierele Utilizate de Portage

Directive de Configurare

Portage conţine o configuraţie implicită stocată în /etc/make.globals. Dacă vizualizaţi fişierul, veţi observa că toată configuraţia Portage este manipulată prin intermediul acestor variabile. Ce variabile interpretează şi ce reprezintă ele, este descris ulterior.

Deoarece multe directive de configurare diferă între arhitecturi, Portage mai conţine fişiere de configurare implicite ce fac parte din profilul dvs. Profilul este indicat de către fişierul symlink /etc/make.profile; Configuraţiile sistemului Portage sunt setate în fişierele make.defaults din profilul dvs. şi toate profilele ascendente. Vom explica mai multe despre profile şi directorul /etc/make.profile ulterior.

Dacă plănuţi să schimbaţi o variabilă de configurare, nu modificaţi /etc/make.globals sau make.defaults. Utilizaţi, în loc, /etc/make.conf, fişier ce are prioritate peste celelalte fişiere. Veţi regăsi, de asemenea, un fişier /etc/make.conf.example. Aşa cum sugerează şi numele, este numai un fişier exemplu - Portage nu citeşte din acest fişier.

Puteţi, de asemenea, defini o variabilă Portage sub forma unei variabile de mediu, dar nu recomandăm această politică.

Informaţii Specifice pentru Profile

Deja am amintit despre directorul /etc/make.profile. Acesta, nu este chiar un director, ci un link simbolic spre un profil, cel implicit din /usr/portage/profiles, deşi vă puteţi chiar crea profilele proprii în altă locaţie şi să indicaţi link-ul simbolic spre acestea. Link-ul simbolic spre care profilul este cel corespondent sistemului dvs.

Un profil conţine informaţii specifice arhitecturii pentru Portage, cum ar fi o listă de pachete ce aparţin sistemului corespondent profilului, o listă de pachete ce nu funcţionează (sau sunt mascate) în acel profil, etc.

Configurări Specifice Utilizatorului

Dacă doriţi să suprascrieţi comportamentul Portage în legătură cu instalarea pachetelor, va trebui să editaţi fişierele din /etc/portage. Este foarte recomandat să utilizaţi fişierele din /etc/portage şi foarte nerecomandat să suprascrieţi comportamentul prin intermediul variabilelor de mediu!

În directorul /etc/portage puteţi crea următoarele fişiere:

  • package.mask ce conţine o listă cu pachetele pe care doriţi ca Portage să nu le instaleze niciodată
  • package.unmask ce conţine o listă cu pachetele ce doriţi să le instalaţi, chiar dacă dezvoltatorii Gentoo descurajează foarte puternic să le instalaţi
  • package.keywords ce conţine o listă cu pachetele ce doriţi să le instalaţi, deşi pachetul nu a fost găsit ca potrivit (încă) pentru sistemul sau arhitectura dvs.
  • package.use ce conţine o listă cu indicatorii USE pe care doriţi să-i utilizaţi pentru anumite pachete, fără ca întregul sistem să utilizeze acei indicatori USE

Mai multe informaţii despre directorul /etc/portage şi o listă completă cu fişierele posibile pe care le puteţi crea, pot fi găsite în pagina de manual a Portage:

Cod 1.1: Consultarea paginii de manual Portage

$ man portage

Modificarea Fişierelor & Locaţiile Directoarelor Portage

Fişierele de configurare menţionate anterior nu pot fi stocate în altă locaţie - Portage va căuta întotdeauna aceste fişiere de configurare exact în locaţia specificată. Totuşi, Portage utilizează multe locaţii în mai multe scopuri: directorul de instalare temporar, stocarea surselor, structura Portage, ...

Toate aceste scopuri au locaţii implicite bine stabilite, dar le puteţi modifica după preferinţe prin intermediul /etc/make.conf. Restul acestui capitol explică scopul special locaţiilor utilizate de Portage şi cum să le modificaţi locaţia în sistemul dvs. de fişiere.

Totuşi, acest document nu are ca scop sa fie utilizat ca referinţă. Dacă doriţi acoperirea 100% cu informaţii, vă rugăm să consultaţi paginile de manual pentru Portage şi make.conf:

Cod 1.2: Consultarea paginilor de manual pentru Portage şi make.conf

$ man portage
$ man make.conf

1.b. Stocarea Fişierelor

Structura Portage

Locaţia implicită a structurii Portage este /usr/portage. Această locaţie este definită de către variabila PORTDIR. Când stocaţi structura Portage în altă locaţie (prin modificarea acestei variabile), nu uitaţi să schimbaţi link-ul simbolic pentru /etc/make.profile în concordanţă.

Dacă modificaţi variabila PORTDIR, aţi putea dori modificarea următoarelor variabile, de asemenea, deoarece ele nu vor fi influenţate de schimbarea variabilei PORTDIR. Aceasta se întâmplă din modul cum Portage manipulează variabilele: PKGDIR, DISTDIR, RPMDIR.

Binare Precompilate

Deşi Portage nu utilizează binare precompilate, implicit, are un suport vast pentru acestea. Când îi specificaţi sistemului Portage lucrul cu pachete precompilate, acesta le va căuta în /usr/portage/packages. Această locaţie este definită de variabila PKGDIR.

Codul Sursă

Codurile sursă ale aplicaţiilor sunt stocate, implicit, în directorul /usr/portage/distfiles. Această locaţie este definită de variabila DISTDIR.

Fişierele RPM

Chiar dacă Portage nu poate utiliza fişiere RPM, este capabil să le genereze utilizând comanda ebuild (consultaţi capitolul despre Aplicaţia Ebuild). Locaţia implicită în care Portage stochează fişierele RPM este /usr/portage/rpm şi este definită de variabila RPMDIR.

Baza de Date Portage

Portage stochează starea sistemului dvs. (ce pachete sunt instalate, ce fişiere aparţin fiecărui pachet, ...) în /var/db/pkg. Nu alteraţi aceste fişier manual! Va strica informaţiile pe care le deţine Portage despre sistemul dvs.

Informaţiile Cache din Portage

Informaţiile cache din Portage (conţinând timpii de modificare, pachetele virtuale, informaţiile despre arborele de dependenţe, ...) sunt stocate în /var/cache/edb. Această locaţie este chiar un sistem cache: îl puteţi curăţa, dacă nu aveţi nici o aplicaţie din portage ce rulează în acel moment.

1.c. Compilarea Aplicaţiilor

Fişierele Temporare din Portage

Fişierele temporare din Portage sunt stocate, implicit, în /var/tmp. Acest director este definit de variabila PORTAGE_TMPDIR.

Dacă modificaţi variabila PORTAGE_TMPDIR, aţi putea modifica următoarele variabile, de asemenea, deoarece nu sunt alterate odată cu modificarea PORTAGE_TMPDIR. Aceasta se întâmplă ca urmare a manipulării de către Portage a următoarelor variabile: BUILD_PREFIX.

Directorul pentru Compilare

Portage creează directoare specifice necesare compilării pentru fiecare pachet instalat, în /var/tmp/portage. Această locaţie este definită de variabila BUILD_PREFIX.

Locaţia Sistemului de Fişiere Real

Implicit, Portage instalează toate fişierele în sistemul de fişiere curent (/), dar puteţi schimba această locaţie prin setarea variabilei de mediu ROOT. Aceasta este utilă când creaţi imagini instalate noi.

1.d. Caracteristici de Logging

Procesul de Logging

Portage poate crea fişiere de log pentru fiecare ebuild, dar doar dacă variabila PORT_LOGDIR este setată spre o locaţie ce are permisiuni de scriere pentru Portage (user-ul portage). Implicit, această variabilă nu este setată.

2. Configurarea prin intermediul Variabilelor

2.a. Configuraţia Portage

Aşa cum am notat anterior, Portage este configurabil prin multe variabile pe care ar trebui să le definiţi în /etc/make.conf. Vă rugăm să consultaţi pagina de manual make.conf pentru o informaţii mai detaliate:

Cod 1.1: Consultarea paginii de manual make.conf

$ man make.conf

2.b. Opţiuni Specifice Compilării

Opţiuni pentru Configurare şi Compilator

Când Portage compilează aplicaţiile, acesta pasează conţinutul următoarelor variabile compilatorului şi scriptului configure:

  • CFLAGS & CXXFLAGS definesc indicatorii de compilare doriţi pentru C şi C++.
  • CHOST defineşte informaţia despre host-ul pentru care se face compilarea pentru scriptul configure a aplicaţiei.
  • MAKEOPTS este pasat comenzii make şi este, de obicei, setat să definească numărul de paralelism utilizat în timpul compilării. Mai multe informaţii despre opţiunile make pot fi găsite în pagina de manual make.

Variabila USE este, de asemenea, utilizată în timpul rulării configure şi al compilărilor dar a fost explicată în detaliu în capitolele anterioare.

Opţiuni de Construire

Când Portage a construit o versiune mai nouă a unui anumit titlu software, va şterge fişierele vechi şi versiunea veche din sistem. Portage acordă o pauză de 5 secunde înaintea ştergerii vechii versiuni. Aceste 5 secunde sunt definite de variabila CLEAN_DELAY.

2.c. Configuraţia Protecţiei Fişierelor

Locaţiile Protejate ale Portage

Portage suprascrie fişierele noilor versiuni ale unui titlu software, dacă fişierele nu sunt stocate într-o locaţie protejată. Aceste locaţii protejate sunt definite de variabila CONFIG_PROTECT şi sunt, în general, locaţii pentru fişierele de configurare. Lista de directoare este delimitată prin spaţii.

Un fişier ce ar fi trebuit să fie scris într-o asemenea locaţie, este redenumit şi utilizatorul este avertizat de prezenţa unei versiuni mai noi (presupusă) a fişierului de configurare.

Puteţi afla setarea curentă pentru CONFIG_PROTECT din ieşirea comenzii emerge --info:

Cod 3.1: Aflarea setării curente a CONFIG_PROTECT

$ emerge --info | grep 'CONFIG_PROTECT='

Mai multe informaţii despre Configurarea Protecţiei Fişierelor este disponibilă prin intermediul emerge:

Cod 3.2: Mai multe informaţii despre Configurarea Protecţiei Fişierelor

$ emerge --help config

Excluderea de Directoare

Pentru a 'deproteja' anumite directoare din locaţiile protejate, puteţi utiliza variabila CONFIG_PROTECT_MASK.

2.d. Opţiuni de Descărcare

Locaţii de Servere

Când informaţia sau data necesară nu este disponibilă pe sistemul dvs., Portage o va descărca de pe Internet. Locaţiile serverelor pentru diverse informaţii şi canale de date sunt definite de următoarele variabile:

  • GENTOO_MIRRORS defineşte o listă de locaţii de servere ce conţin coduri sursă (distfiles).
  • PORTAGE_BINHOST defineşte o locaţie particulară de servere ce conţine pachete precompilate pentru sistemul dvs.

A treia setare implică locaţia serverului de rsync utilizat pentru a vă actualiza structura Portage:

  • SYNC defineşte un anume server pe care Portage îl utilizează pentru descărca structura Portage.

Variabilele GENTOO_MIRRORS şi SYNC pot fi setate automat prin intermediul aplicaţiei mirrorselect. Trebuie mai întâi să instalaţi mirrorselect utilizând emerge mirrorselect, înainte de a-l folosi. Pentru mai multe informaţii, consultaţi pagina de ajutor online a aplicaţiei mirrorselect:

Cod 4.1: Mai multe informaţii despre mirrorselect

# mirrorselect --help

Dacă mediul dvs. necesită utilizarea unui server proxy, puteţi utiliza variabilele HTTP_PROXY, FTP_PROXY şi RSYNC_PROXY pentru a declara un server proxy.

Comenzi de Descărcare

Când Portage necesită descărcarea unui cod sursa, utilizează wget implicit. Puteţi modifica aceasta comanda prin setarea variabilei FETCHCOMMAND.

Portage poate să continue un cod sursă descărcat parţial. Acesta utilizează implicit wget, dar aceasta se poate schimba prin modificarea variabilei RESUMECOMMAND.

Asiguraţi-vă că atât FETCHCOMMAND cât şi RESUMECOMMAND stochează codul sursă în locaţia curentă. În interiorul acestor variabile puteţi utiliza \${URI} şi \${DISTDIR} pentru a indica locaţia codului sursă şi locaţia distfiles.

De asemenea, puteţi defini manipulatori specifici protocoalelor prin intermediul FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, şi aşa mai departe.

Setări pentru Rsync

Nu puteţi modifica comanda rsync utilizată de Portage pentru a actualiza structura Portage, dar puteţi seta unele variabile în legătură cu comanda rsync:

  • RSYNC_EXCLUDEFROM indică un fişier ce conţine pachetele şi/sau categoriile pe care rsync doriţi să le ignore în timpul procesului de actualizare
  • RSYNC_RETRIES defineşte numărul de câte ori rsync ar trebui să încerce să se conecteze la mirror-ul indicat de variabila SYNC înainte de a renunţa. Această variabilă are valoarea implcită 3.
  • RSYNC_TIMEOUT defineşte numărul de secunde în care conexiunea rsync poate stagna înainte ca rsync să considere că timpul a expirat. Această variabilă are valoare implicită de 180, dar utilizatorii de dial-up sau cei care au sisteme încete ar trebui să o seteze, probabil, la 300 sau mai mare.

2.e. Configurarea Gentoo

Selectarea Ramurii

Puteţi modifica ramura implicită cu ajutorul variabilei ACCEPT_KEYWORDS. Aceasta are valoarea implicită ramura stabilă a arhitecturii dvs. Mai multe informaţii despre ramurile din Gentoo, pot fi găsite în următorul capitol.

Caracteristici ale Sistemului Portage

Puteţi activa anumite caracteristici ale Portage prin intermediul variabilei FEATURES. Caracteristicile Portage au fost tratate în capitolele anterioare, cum ar fi cel dedicat Caracteristicilor Portage.

2.f. Comportamentul Portage

Administrarea Resurselor

Cu ajutorul variabilei PORTAGE_NICENESS puteţi mări sau reduce valoarea nice sub care rulează Portage. Valoarea PORTAGE_NICENESS este adăugată valorii curente nice.

Pentru mai multe informaţii despre valorile nice, consultaţi pagina de manual nice:

Cod 6.1: Mai multe informaţii despre nice

$ man nice

Comportamentul Afişării

Variabila NOCOLOR, ce are valoarea implicită "false", defineşte dacă Portage ar trebui să dezactiveze utilizarea afişării utilizând culori.

3. Interclasarea Categoriilor Software

3.a. Utilizarea Unei Singure Ramuri

Ramura Stabilă

Variabila ACCEPT_KEYWORDS defineşte ce ramură de aplicaţii utilizaţi pe sistemul dvs. Aceasta are valoarea implicită ramura stabilă a arhitecturii dvs, spre exemplu x86.

Recomandăm utilizarea numai a ramurii stabile. Cu toate acestea, dacă nu acordaţi prea multă importanţă stabilităţii şi doriţi să ajutaţi comunitatea Gentoo prin trimiterea de rapoarte de bug-uri la http://bugs.gentoo.org, citiţi mai departe.

Ramura de Test

Dacă doriţi să utilizaţi mai mult aplicaţii recente, puteţi avea în vedere utilizarea ramurii de test în loc. Pentru a îi specifica sistemului Portage să utilizeze ramura de test, adăugaţi un ~ în faţa numelui arhitecturii dvs.

Ramura de test este exact ceea ce-i implică numele - Testare. Dacă un pachet este în testare, înseamnă că dezvoltatorii ştiu că este funcţional dar nu a fost testat îndeajuns. Puteţi, foarte bine, să fiţi primul ce descoperă o eroare în pachet, caz în care puteţi completa un raport de bug pentru a înştiinţa dezvoltatorii de acesta.

Aveţi grijă, totuşi, că este posibil să observaţi unele probleme de instabilitate, manipularea imperfectă a pachetelor (spre ex. dependenţe incorecte/lipsă), actualizări prea frecvente (rezultând în multe compilări) sau pachete problematice. Dacă nu ştiţi cum funcţionează Gentoo şi modalităţile de rezolvare a problemelor, vă recomandăm să rămâneţi pe ramura stabilă şi testată.

Spre exemplu, pentru a selecta ramura de test pentru arhitectura x86, editaţi /etc/make.conf şi setaţi:

Cod 1.1: Setarea variabilei ACCEPT_KEYWORDS

ACCEPT_KEYWORDS="~x86"

Dacă vă actualizaţi sistemul acum, veţi observa că multe din pachete vor fi actualizate. Ţineţi minte, totuşi: după ce v-aţi actualizat sistemul să utilizeze ramura stabilă, de obicei nu există o cale prea uşoară să reveniţi la cea stabilă, oficială (cu excepţia cazurilor în care deţineţi un backup).

3.b. Combinarea Ramurii Stabile cu cea de Test

Fişierul package.keywords

Îi puteţi specifica sistemului Portage să permită ramura de test pentru anumite pachete dar utilizaţi ramura stabilă pentru restul sistemului. Pentru aceasta, adăugaţi categoria pachetului şi numele pe care doriţi să-l folosiţi din ramura de test în /etc/portage/package.keywords. Spre exemplu, dacă doriţi să utilizaţi ramura de test pentru gnumeric:

Cod 2.1: Setarea /etc/portage/package.keywords pentru gnumeric, întreaga linie

app-office/gnumeric ~x86

Testarea Anumitor Versiunilor

Dacă doriţi să utilizaţi o anumită versiune din ramura de test, dar nu doriţi ca Portage să considere ramura de test pentru celelalte versiuni, puteţi adăuga versiunea în fişierul package.keywords. În acest caz, trebuie să utilizaţi operatorul =. Puteţi, de asemenea, să introduceţi o plajă de versiuni utilizând operatorii <=, <, > or >=.

În oricare din cazuri, dacă adăugaţi informaţia despre versiune, trebuie să utilizaţi un operator. Dacă nu utilizaţi informaţia despre versiune, nu puteţi folosi un operator.

În următorul exemplu, îi specificăm sistemului Portage să accepte gnumeric-1.2.13:

Cod 2.2: Activarea unei versiuni specifice de test pentru gnumeric

=app-office/gnumeric-1.2.13 ~x86

3.c. Utilizarea Pachetelor Mascate

Fişierul package.unmask

Dezvoltatorii Gentoo nu oferă suport pentru utilizarea acestor fişiere. vă rugăm să faceţi exerciţii cu atenţie. Cererile de suport în legătură cu package.unmask şi/sau package.mask nu vor primi răspuns. Aţi fost avertizaţi.

Când un pachet a fost mascat de către dezvoltatorii Gentoo şi totuşi doriţi să-l utilizaţi, în ciuda motivului menţionat în fişierul package.mask (situat implicit în /usr/portage/profiles), adăugaţi exact aceeaşi linie în /etc/portage/package.unmask.

Spre exemplu, dacă =net-mail/hotwayd-0.8 este mascat, îi puteţi anula mascarea prin adăugarea exact aceleiaşi linii în fişierul package.unmask:

Cod 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

Fişierul package.mask

Când doriţi ca sistemul Portage să nu ia în considerare un anumit pachet sau o anumită versiune a unui pachet, îl puteţi masca prin adăugarea liniei corespunzătoare în /etc/portage/package.mask.

Spre exemplu, dacă nu doriţi ca Portage să instaleze versiuni de kernel mai noi decât gentoo-sources-2.6.8.1, adăugaţi linia următoare în package.mask:

Cod 3.2: Exemplu /etc/portage/package.mask

>sys-kernel/gentoo-sources-2.6.8.1

4. Utilitare Adiţionale pentru Portage

4.a. etc-update

etc-update este un utilitar ce ajută la instalarea fişierelor ._cfg0000_<nume>. El oferă un mediu de instalare interactiv şi poate, de asemenea, să instaleze modificările triviale. Fişierele ._cfg0000_<name> sunt generate de Portage în momentul în care încearcă suprascrierea unui fişier într-un director protejat de variabila CONFIG_PROTECT.

Rularea etc-update este destul de directă:

Cod 1.1: Rularea etc-update

# etc-update

După instalarea modificărilor implicite, vi se va afişa o listă cu fişierele protejate ce au un fişier de actualizat în aşteptare. În partea inferioară vi se vor afişa următoarele opţiuni posibile:

Cod 1.2: opţiunile etc-update

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Dacă introduceţi -1, etc-update va ieşi fără a executa nici o schimbare. Dacă introduceţi -3 sau -5, toate fişierele de configurare afişate vor fi suprascrise cu versiunile mai noi. Este, de aceea, foarte important să selectaţi întâi fişierele de configurare ce nu trebuie actualizate automat. Această operaţiune constă în simpla introducere a numărului afişat în stânga acelui fişier de configurare.

Ca un exemplu, vom selecta fişierul de configurare /etc/pear.conf:

Cod 1.3: Actualizarea unui anumit fişier de configurare

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Acum, puteţi observa diferenţele dintre două fişiere. Dacă dvs. credeţi că fişierele de configurare actualizate pot fi utilizate fără probleme, introduceţi 1. Dacă dvs. credeţi că fişierul de configurare actualizat nu este necesar, sau nu oferă nici o informaţie nouă sau folositoare, introduceţi 2. Dacă doriţi să actualizaţi interactiv fişierul de configurare curent, introduceţi 3.

Nu are nici un sens elaborarea instalării interactive, aici. Pentru completitudine, vom lista toate comenzile posibile pe care le puteţi utiliza în timpul instalării interactive a două fişiere. Vi se vor afişa două linii (cea originală, şi cea nouă, propusă) şi un prompt la care puteţi introduce următoarele comenzi:

Cod 1.4: Comenzile disponibile pentru instalarea interactivă

ed:     Editaţi şi apoi utilizaţi ambele versiuni, fiecare conţinând un antet.
eb:     Editaţi şi apoi utilizaţi ambele versiuni.
el:     Editaţi şi apoi utilizaţi versiunea din stânga.
er:     Editaţi şi apoi utilizaţi versiunea din dreapta.
e:      Editaţi o nouă versiune.
l:      Utilizaţi versiunea din stânga.
r:      Utilizaţi versiunea din dreapta.
s:      Includeţi silenţios liniile comune.
v:      Includeţi afişând amănuntele, liniile comune.
q:      Ieşiţi.

Când aţi terminat actualizarea fişierelor de configurare importante, puteţi, acum, să le actualizaţi pe toate celelalte. etc-update va ieşi, dacă nu va mai găsi alte fişiere de configurare actualizabile.

4.b. dispatch-conf

Cu ajutorul dispatch-conf puteţi actualiza fişierele dvs. de configurare şi să reţineţi istoricul tuturor modificărilor efectuate. dispatch-conf stochează diferenţele dintre fişierele de configurare ca fişiere patch sau prin utilizarea sistemului de revizii RCS.

La fel ca etc-update, îi puteţi specifica păstrarea fişierelor de configurare intacte, editarea celui curent sau instalarea interactivă a modificărilor. Totuşi, dispatch-conf deţine unele caracteristici adiţionale:

  • Instalează automat actualizările fişierelor de configurare ce conţin doar actualizări ale comentariilor
  • Instalează automat fişierele de configurare ce diferă numai prin numărul de spaţii albe

Asiguraţi-vă că aţi editat mai întâi /etc/dispatch-conf.conf şi creaţi directorul indicat de variabila archive-dir.

Pentru mai multe informaţii, verificaţi pagina de manual pentru dispatch-conf:

Cod 2.1: Consultarea paginii de manual pentru dispatch-conf

$ man dispatch-conf

4.c. quickpkg

Cu ajutorul quickpkg puteţi crea arhive ale pachetelor ce sunt deja instalate în sistemul dvs. Aceste arhive pot fi utilizate ca pachete precompilate. Rularea quickpkg este directă: trebuie doar să adăugaţi numele pachetelor pe care doriţi să le împachetaţi:

Spre exemplu, pentru a impacheta curl, arts şi procps:

Cod 3.1: Exemplu de utilizare pentru quickpkg

# quickpkg curl arts procps

Pachetele precompilate vor fi stocate în $PKGDIR/All (implicit /usr/portage/packages/All). Link-uri simbolice ce indică spre aceste pachete sunt stocate în $PKGDIR/<categorie>.

5. Derivarea din Structura Oficială

5.a. Utilizarea unui Subset din Structura Portage

Excluderea de Pachete/Categorii

Puteţi actualiza în mod selectiv anumite categorii/pachete şi să ignoraţi celelalte categorii pachete. Puteţi face acest lucru prin configurarea rsync pentru excluderea unor categorii/pachete în timpul operaţiei de emerge --sync.

Trebuie să definiţi numele fişierului ce conţine schema de excludere, în variabila RSYNC_EXCLUDEFROM din fişierul dvs. /etc/make.conf.

Cod 1.1: Definirea fişierului de excluziune în /etc/make.conf

RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes

Cod 1.2: Excluderea tuturor jocurilor în /etc/portage/rsync_excludes

games-*/*

Notaţi, totuşi, că aceasta poate genera probleme de dependenţe, deoarece unele pachete noi pot depinde de alte pachete noi, dar care au fost excluse.

5.b. Adăugarea de Ebuild-uri Neoficiale

Definirea unui Director Portage Paralel

Îi puteţi specifica sistemului Portage să utilizeze fişiere ebuild ce nu sunt disponibile oficial prin intermediul structurii Portage. Creaţi un director nou (spre exemplu /usr/local/portage) în care să stocaţi fişiere ebuild neoficiale. Utilizaţi aceeaşi structură ca structura Portage oficială!

Apoi, definiţi variabila PORTDIR_OVERLAY în /etc/make.conf şi setaţi-o să indice către directorul definit anterior. Când utilizaţi Portage, acum, va considera şi toate aceste fişiere ebuild fără ştergerea/suprascrierea acestor fişiere ebuild următoarea dată când se va rula emerge --sync.

Lucrul cu mai Multe Directoare Paralele

Pentru utilizatorii experimentaţi ce dezvoltă utilizând mai multe directoare paralele, testarea pachetelor înainte de a fi integrate cu structura Portage sau doar dorinţa de a utiliza fişiere ebuild neoficiale din surse variate, pachetul app-portage/gentoolkit-dev vă oferă gensync, un utilitar ce vă păstrează repozitoriile paralele actualizate.

Cu gensync puteţi actualiza toate repozitoriile dintr-o dată, sau să selectaţi doar o parte din acestea. Fiecare repozitoriu ar trebui să aibă un fişier .syncsource în directorul de configurare /etc/gensync/ ce conţine locaţia repozitoriului, numele, identificatorul, etc.

Presupunem că aveţi două repozitorii adiţionale denumite java (pentru fişierele ebuild de java, în dezvoltare) şi entapps (pentru aplicaţiile dezvoltate proprietar pentru mediul dvs. enterprise). Puteţi actualiza aceste repozitorii, după cum urmează:

Cod 2.1: Utilizarea gensync pentru actualizarea unor repozitorii

# gensync java entapps

5.c. Aplicaţii Neîntreţinute de Portage

Utilizarea Portage cu Aplicaţii Auto-Întreţinute

În unele cazuri, doriţi să configuraţi, instalaţi şi să asiguraţi mentenanţa aplicaţiilor manual, fără ca Portage să automatizeze acest proces pentru dvs., chiar în cazul în care titlurile software se regăsesc în Portage. Cazuri mai cunoscute sunt sursele de kernel şi driver-ele nvidia. Puteţi configura Portage să ştie că un anumit pachet este manual întreţinut în sistem. Acest proces este numit injectare şi este suportat de Portage prin fişierul /etc/portage/profile/package.provided.

Spre exemplu, dacă doriţi să informaţi Portage despre vanilla-sources-2.6.11.6 pe care l-aţi instalat manual, adăugaţi următoarea linie în /etc/portage/profile/package.provided:

Cod 3.1: Exemplu de linie pentru package.provided

sys-kernel/vanilla-sources-2.6.11.6

6. Aplicaţia Ebuild

6.a. Emerge şi Ebuild

Aplicaţia ebuild este o interfaţă de nivel mai scăzut pentru sistemul Portage. Utilizând această aplicaţie, puteţi executa acţiuni specifice pentru un anumit fişier ebuild. Spre exemplu, puteţi efectua paşii instalării unui pachet individual.

Utilizarea ebuild este mai mult pentru scopuri de dezvoltare; mai multe informaţii despre ebuild pot, astfel, fi găsite în Manualul Dezvoltatorilor. În orice caz, vom prezenta ce instanţe ale unui ebuild sunt invocate de Portage în timpul procesului de instalare al unui anumit pachet şi cum să invocăm paşii post-configurare permişi de unele ebuild-uri.

6.b. Instalarea Manuală de Aplicaţii

Descărcarea Surselor & Validarea

De câte ori invocaţi ebuild pentru un anumit fişier ebuild, acesta va verifica dacă sumele de control ale tuturor fişierelor implicate sunt egale cu cele conţinute în fişierul Manifest sau files/digest-<nume>-<versiune>. Aceasta se întâmplă după ce sursele au fost descărcate.

Pentru a descărca sursele utilizând comanda ebuild, rulaţi:

Cod 2.1: Descărcarea surselor

# ebuild cale/catre/ebuild fetch

Dacă suma de control md5 nu se potriveşte cu cea listată în fişierul Manifest sau dacă una din sursele descărcate nu se potrivesc celor conţinute în fişierul files/digest-<package>, veţi primi un mesaj de eroare similar cu următorul:

Cod 2.2: Sumă de control incorectă pentru ebuild

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

Următoarea linie, va menţiona fişierul eronat.

Dacă sunteţi convins că sursele pe care le-aţi descărcat sau însuşi fişierul ebuild sunt valide, puteţi regenera fişierele Manifest şi digest-<package> utilizând funcţionalitatea digest a comenzii ebuild:

Cod 2.3: Regenerarea Manifest şi digest

# ebuild cale/catre/ebuild digest

Decompresia Surselor

Pentru a decompresa sursele în /var/tmp/portage (sau orice alt director specificat în /etc/make.conf), utilizaţi funcţionalitatea unpack a comenzii ebuild:

Cod 2.4: Decompresia surselor

# ebuild cale/catre/ebuild unpack

Aceasta va executa funcţia src_unpack() (ce are conţinutul implicit extragerea directă dacă nu este specificată nici o funcţie src_unpack() ). Tot în acest pas se aplică toate patch-urile.

Compilarea Surselor

Următorul pas în procesul de instalare este compilarea surselor. Funcţionalitatea compile a comenzii ebuild realizează acest pas prin execuţia funcţiei src_compile() din fişierul ebuild. Aceasta include şi paşii de configurarea, dacă este cazul.

Cod 2.5: Compilarea surselor

# ebuild cale/catre/ebuild compile

Este recomandat să editaţi funcţia src_compile() a fişierului ebuild dacă doriţi să modificaţi instrucţiunile de compilare. Totuşi, puteţi determina Portage să considere că aplicaţia ebuild a terminat paşii de compilare. Rulaţi individual toate comenzile necesare şi creaţi un fişier numit .compiled în directorul de lucru:

Cod 2.6: Informarea Portage despre terminarea paşilor de compilare

# touch .compiled

Instalarea Fişierelor într-o Locaţie Temporară

La următorul pas, Portage va instala toate fişierele necesare într-o locaţie temporară. Acest director va conţine, în acest caz, toate fişierele ce urmează să fie instalate în sistemul de fişiere real. Puteţi realiza acest lucru prin rularea funcţiei install a comenzii ebuild ce execută funcţia src_install() din fişierul ebuild:

Cod 2.7: Instalarea fişierelor

# ebuild cale/catre/ebuild install

Instalarea Fişierelor în Sistemul de Fişiere Real

Pasul final este instalarea tuturor fişierelor în sistemul de fişiere real şi înregistrarea acestor fişiere în baza de date a Portage. Comanda ebuild denumeşte acest pas "qmerge" şi implică următorii paşi:

  • Execuţia funcţiei pkg_preinst(), dacă este specificat
  • Copierea tuturor fişierelor în sistemul de fişiere real
  • Înregistrarea fişierelor în baza de date Portage
  • Execuţia funcţiei pkg_postinst(), dacă este specificat

Rulaţi funcţia qmerge a comenzii ebuild pentru a realiza aceşti paşi:

Cod 2.8: Instalarea fişierelor în sistemul de fişiere real

# ebuild cale/catre/ebuild qmerge

Curăţarea Directorului Temporar

În final, puteţi curăţa directorul temporar prin utilizarea funcţiei clean a comenzii ebuild:

Cod 2.9: Curăţarea directorului temporar

# ebuild cale/catre/ebuild clean

6.c. Caracteristici Adiţionale Ebuild

Rularea Tuturor Comenzilor Legate de Instalare

Utilizând funcţia merge a comenzii ebuild puteţi rula descărcarea, decompresia, compilarea, instalarea şi comenzile qmerge într-un singur pas:

Cod 3.1: Instalarea aplicaţiilor

# ebuild cale/catre/ebuild merge

Efectuarea Acţiunilor de Configurare

Unele aplicaţii includ instrucţiuni ce configurează pachetul în continuare, pe sistemul dvs. Aceste instrucţiuni pot fi interactive şi, de aceea, nu pot fi executate automat. Pentru a rula aceşti paşi de configurare, ce sunt listaţi în funcţia (opţională) a fişierului ebuild, utilizaţi funcţionalitatea config a comenzii ebuild:

Cod 3.2: Configurarea unui pachet

# ebuild cale/catre/ebuild config

Costruirea unui pachet (RPM)

Îi puteţi specifica sistemului Portage să creeze un pachet binar pentru un fişier ebuild, sau chiar un pachet RPM. Utilizaţi funcţia package sau rpm a comenzii ebuild pentru a crea aceste arhive. Există, totuşi, unele diferenţe de funcţionalitate între acestea două:

  • Funcţionalitatea package este asemănătoare cu cea de instalare, executând toţi paşii necesari (descărcare, decompresie, compilare, instalare) înainte ca pachetul să fie creat
  • Funcţionalitatea rpm construieşte un pachet RPM din fişierele create după ce a rulat funcţia install a comenzii ebuild

Cod 3.3: Crearea de pachete

(Pentru un pachet binar compatibil cu Portage)
# ebuild cale/catre/ebuild package

(Pentru un pachet RPM)
# ebuild cale/catre/ebuild rpm

Totuşi, fişierul RPM creat, nu va conţine informaţia de dependenţă a fişierului ebuild.

6.d. Mai Multe Informaţii

Vă rugăm să consultaţi următoarele pagini de manual pentru mai multe informaţii despre Portage, aplicaţia ebuild şi fişierele ebuild:

Cod 4.1: Pagini de manual

$ man portage    (Portage însuşi)
$ man emerge     (Comanda emerge)
$ man ebuild     (Comanda ebuild)
$ man 5 ebuild   (Sintaxa fişierului ebuild)

Veţi găsi, de asemenea, informaţii în legătură cu dezvoltarea în Manualul Dezvoltatorilor.

D. Configurarea Reţelei în Gentoo

1. Primii Paşi

1.a. Primii paşi

Notă: Acest document presupune că aţi configurat corect kernel-ul dvs., modulele pentru componentele hardware şi cunoaşteţi numele interfeţei componentei dvs. hardware. De asemenea, presupune cazul în care configuraţi eth0, dar poate fi şi eth1, wlan0, etc.

Notă: Acest document necesită rularea pachetului baselayout-1.11.11 sau mai nou.

Pentru a începe configurarea plăcii dvs. de reţea, trebuie să i-o specificaţi sistemului RC al Gentoo. Aceasta se poate face prin crearea unui link simbolic de la net.lo către net.eth0 în /etc/init.d

Cod 1.1: Crearea link-ului simbolic net.eth0 către net.lo

# cd /etc/init.d
# ln -s net.lo net.eth0

Sistemul RC al Gentoo recunoaşte acum interfaţa respectivă. De asemenea, trebuie să cunoască modalitatea de configurare a noii interfeţe. Toate interfeţele de reţea sunt configurate în /etc/conf.d/net. Mai jos, aveţi un exemplu de configurare DHCP şi adresă statică.

Cod 1.2: Exemple pentru /etc/conf.d/net

# Pentru DHCP
config_eth0=( "dhcp" )

# Pentru IP static utililzând notaţia CIDR
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )

# Pentru IP static, utilizând notaţia cu mască de reţea
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )

Notă: Dacă nu specificaţi o configuraţie pentru interfaţa dvs., atunci este presupus DHCP.

Notă: CIDR înseamnă Classless InterDomain Routing. Original, adresele IPv4 erau clasificate ca A, B sau C. Sistemul de clasificare anterior nu se aştepta la popularitatea masivă a Internetului şi este în pericol de a rămâne fără adrese unice noi. CIDR este o schemă de adresare ce permite unei adrese IP să desemneze mai multe adrese IP. O adresă IP CIDR arată ca o adresă IP normală exceptând faptul că se termină cu un caracter slash urmat de un număr; spre exemplu 192.168.0.0/16. CIDR este descris în RFC 1519.

Acum, că ne-am configurat interfaţa, o putem porni şi opri prin utilizarea următoarelor comenzi.

Cod 1.3: Pornirea şi oprirea script-urilor de reţea

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

Important: Când aveţi probleme cu reţeaua, este recomandat să setaţi RC_VERBOSE="yes" în /etc/conf.d/rc pentru a vi se afişa mai multe informaţii despre ceea ce se intâmplă.

Acum, că aţi pornit şi oprit cu succes interfaţa dvs. de reţea, este posibil să doriţi să o porniţi odată cu pornirea sistemului. Iată cum puteţi face acest lucru. Ultima comandă "rc" în specifică sistemului Gentoo să pornească orice script-uri din nivelul de iniţializare curent, ce nu au fost pornite, încă.

Cod 1.4: Configurarea unei interfeţe de reţea pentru a porni la boot

# rc-update add net.eth0 default
# rc

2. Configurarea Avansată

2.a. Configurare Avansată

Variabila config_eth0 reprezintă inima configuraţiei unei interfeţe. Este o listă de instrucţiuni de nivel înalt pentru configurarea interfeţei (eth0 în acest caz). Fiecare comandă din lista de instrucţiuni este executată secvenţial. Interfaţa este considerată OK dacă cel puţin o comandă funcţionează.

Iată o listă de instrucţiuni integrate:

Commandă Descriere
null Nu face nimic
noop Dacă interfaţa este activă şi există o adresă, atunci anulează configurarea cu succes
o adresă IPv4 sau IPv6 Adaugă adresa interfeţei
dhcp, adsl sau apipa (sau o anumită comandă dintr-un modul extern) Rulează modulul ce oferă comanda. Spre exemplu, dhcp va rula un modul ce oferă DHCP, care poate fi, ori dhcpcd, udhcpc, dhclient sau pump.

Dacă o comandă returnează eroare, puteţi specifica o comandă de revenire. Aceasta trebuie să se potrivească în structura configuraţiei exact.

Puteţi înlănţui aceste comenzi împreună. Iată unele exemple din lumea reală.

Cod 1.1: Exemple de configurare

# Adăugarea a trei adrese IPv4
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Adăugarea unei adrese IPv4 şi a două adrese IPv6
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Păstraţi adresa desemnată de kernel, dacă interfaţa nu se activează
# deci desemnează o altă adresă prin DHCP. Dacă DHCP returnează eroare
# atunci adaugă o adresă statică determinată de APIPA
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Notă: Când utilizaţi modulul ifconfig şi adăugaţi una sau mai multe adrese, aliasurile interfeţelor sunt create pentru fiecare adresă suplimentară. Deci, cu exemplele de mai sus, veţi avea interfeţele eth0, eth0:1 şi eth0:2. Nu puteţi face nimic special cu aceste interfeţe, deoarece kernel-ul sau alte aplicaţii vor trata eth0:1 şi eth0:2 ca eth0.

Important: Ordinea comenzilor de revenire este importantă! Dacă nu am specificat opţiunea null, atunci comanda apipa va fi rulată doar în cazul în care comanda noop returnează eroare.

Notă: APIPA şi DHCP sunt tratate ulterior.

2.b. Dependenţe de Reţea

Script-urile de iniţializare din /etc/init.d pot depinde de o anumită interfaţă de reţea sau doar de net. net poate fi definit în /etc/conf.d/rc să aibă o altă însemnătate prin utilizarea variabilei RC_NET_STRICT_CHECKING.

Valoare Descriere
none Serviciul net este considerat întotdeauna activ
no În principiu, aceasta înseamnă că cel puţin un serviciu net.* în afară de net.lo trebuie să fie activ. Aceasta poate fi utilizată de utilizatorii de sisteme notebook ce deţin o interfaţă WIFI şi o interfaţă statică, şi doresc ca doar una să fie activă în orice moment au nevoie de o interfaţă activă.
lo Aceasta este similară cu opţiunea no, numai că şi net.lo este luată în considerare. Acest lucru este folositor utilizatorilor cărora nu le pasă ca o anume interfaţă de reţea să fie activă la boot.
yes Pentru aceasta, TOATE interfeţele de reţea TREBUIE să fie active pentru ca serviciul net să fie considerat activ.

Dar ce se întâmplă în situaţia în care net.br0 depinde de net.eth0 şi net.eth1? net.eth1 poate fi un dispozitiv wireless sau PPP ce necesită configurare înainte să fie adăugate în bridge. Aceasta nu se poate înfăptui dacă /etc/init.d/net.br0 este un link simbolic la net.lo.

Răspunsul este crearea propriei funcţii depend() în /etc/conf.d/net

Cod 2.1: dependenţă net.br0 în /etc/conf.d/net

# Puteţi utiliza orice dependenţă (use, after, before) ca în script-urile curente
depend_br0() {
  need net.eth0 net.eth1
}

Pentru o discuţie mai detaliată despre dependenţă, consultaţi secţiunea "Scrierea Script-urilor de Iniţializare" din Manualul Gentoo.

2.c. Nume de variabile şi valori

Numele de variabile este dinamic. Acestea urmează în mod normal, structura de variabila_${interfata|mac|essid|apmac}. Spre exemplu, variabila dhcpcd_eth0 are ca valoare opţiunile dhcpcd pentru eth0 şi dhcpcd_essid are ca valoare opţiunile dhcpcd când oricare interfaţă se conectează la numele ESSID "essid".

Oricum, nu este nici o regulă principală şi rapidă ce defineşte faptul că numele interfeţelor trebuie să fie ethx. De fapt, multe interfeţe wireless au numele interfeţelor ca wlanx, rax cât şi ethx. De asemenea, unele interfeţe definite de utilizator, cum ar fi sisteme bridge, li se poate desemna orice nume, cum ar fi foo. Mai interesant, dispozitivele wireless Access Point pot avea nume cu caractere non-alfanumerice conţinute - aceasta este important, deoarece puteţi configura parametrii de reţea pentru fiecare nume ESSID.

Dezavantajul îl reprezintă faptul că Gentoo utilizează variabile bash pentru reţea - iar bash nu poate utiliza altceva în afara caracterelor alfanumerice din engleză. Pentru a trece peste această limitare, noi modificăm fiecare caracter ce nu este unul alfanumeric englezesc, într-un caracter _.

Un alt dezavantaj al bash este conţinutul variabilelor - unele caractere trebuie să fie reprezentate escape. Aceasta se poate efectua prin plasarea caracterului \ în faţa caracterului ce trebuie reprezentat escape. Mai jos aveţi o listă a caracterelor ce trebuie reprezentate escape în acest mod: ", ' şi \.

În acest exemplu, vom utiliza nume wireless ESSID, deoarece acestea pot conţine cea mai mare plajă de caractere. Vom utiliza ESSID My "\ NET.

Cod 3.1: exemplu de nume de variabilă

# Aceasta funcţionează, însă domeniul este invalid
dns_domain_My____NET="My \"\\ NET"

# Comanda de mai sus setează domeniul dns la valoarea My "\ NET când o placă wireless
# se conectează la un dispozitiv AP al cărui nume ESSID este My "\ NET

3. Reţelistica Modulară

3.a. Module de Reţea

Acum suportăm script-uri de reţea modulare, ceea ce înseamnă că puteţi adăuga cu uşurinţă suport pentru tipuri noi de interfeţe şi module de configurare păstrând compatibilitatea cu cele existente.

Modulele se încarcă implicit în cazul în care pachetul necesar pentru acestea este instalat. Dacă specificaţi un modul aici ce nu are pachetul corespondent instalat, atunci veţi primi o eroare ce va indica numele pachetului ce trebuie instalat. În mod ideal, puteţi utiliza setările modulelor deja prezente atunci când aveţi unul sau mai multe pachete ce oferă acelaşi serviciu şi îl preferaţi pe unul dintre acestea relativ la celălalt.

Notă: Toate setările discutate aici sunt prezente în fişierul /etc/conf.d/net, în cazul în care nu este specificat altfel.

Cod 1.1: Preferenţa modulelor

# Preferaţi iproute2 în locul ifconfig
modules=( "iproute2" )

# Puteţi, de asemenea, să specificaţi şi alte module pentru
# o interfaţă. În acest caz preferăm udhcpc în locul dhcpcd
modules_eth0=( "udhcpc" )

# Puteţi, de asemenea, să specificaţi ce module să nu fie utilizate - spre exemplu
# aţi putea utiliza un o aplicaţie supplicant sau linux-wlan-ng pentru a controla
# configuraţia wireless, dar totuşi doriţi să configuraţi setările de reţea pentru
fiecare ESSID asociat.
modules=( "!iwconfig" )

3.b. Aplicaţii pentru manipularea interfeţelor

Oferim două aplicaţii pentru a manipula interfeţele, şi anume: ifconfig şi iproute2. Aveţi nevoie de unul dintre acestea pentru a efectua orice tip de configurare de reţea.

ifconfig este, momentan, implicit în Gentoo şi este inclus în profilul de sistem. iproute2 este un pachet mult mai puternic şi flexibil, dar nu este inclus implicit.

Cod 2.1: Pentru a instala iproute2

# emerge sys-apps/iproute2

# Pentru a prefera iproute2 în locul ifconfig, în cazul în care ambele sunt instalate
modules=( "iproute2" )

Deoarece, atât ifconfig cât şi iproute2 efectuează acţiuni similare, noi permitem o configurare de bază pentru a funcţiona cu fiecare. Spre exemplu, ambele exemple de cod de mai jos funcţionează, indiferent de modulul utilizat.

Cod 2.2: exemple ifconfig şi iproute2

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# Putem specifica, de asemenea, şi adresa de difuzare
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

DHCP este utilizat la obţinerea informaţiilor de reţea (adresă IP, server-e DNS, Gateway, etc) de la un server DHCP. Aceasta înseamnă că, dacă există un server DHCP ce rulează în reţeaua dvs., trebuie doar să-i specificaţi fiecărui client să utilizeze DHCP iar acesta setează reţeaua singur. Bineînţeles, va trebui să configuraţi alte opţiuni, cum ar fi cele de wireless, PPP şi altele, dacă este necesar, înainte de a putea utiliza DHCP.

DHCP poate fi oferit de dhclient, dhcpcd, pump sau udhcpc. Fiecare modul DHCP are argumentele sale pro şi contra - iată un sumar.

Modul DHCP Pachet Pro Contra
dhclient net-misc/dhcp Dezvoltat de ISC, aceiaşi oameni care dezvoltă BIND DNS. Foarte configurabil Configurarea este foarte complexă, aplicaţia este oarecum mare, nu poate transfera server-ele NTP de la DHCP, nu trimite nici un nume de gazdă implicit
dhcpcd net-misc/dhcpcd De mult timp, implicit în Gentoo, nu se bazează pe utilitare externe Nu mai este menţinut de dezvoltatori, poate fi încet ca timpi, nu devine daemon când timpul de asociere este infinit
pump net-misc/pump Foarte simplu, nu se bazează pe utilitare externe Nu mai este menţinut de dezvoltatori, nu este de încredere, în special pentru dispozitive modem, nu poate prelua server-e NIS de la DHCP
udhcpc net-misc/udhcp Foarte simplu - cel mai mic client DHCP cunoscut, dezvoltat pentru sisteme integrate Nu este verificat - nici o distribuţie nu îl utilizează implicit, nu se poate defini un timp peste 3 secunde

Dacă aveţi mai mult de un client DHCP instalat, trebuie să specificaţi pe care să-l utilizaţi - altfel utilizăm implicit dhcpcd, dacă este disponibil.

Pentru a transmite opţiuni specifice modulului dhcp, utilizaţi modul_eth0="..." (modificaţi modulul cu numele clientului DHCP pe care îl utilizaţi - spre ex. dhcpcd_eth0)

Încercăm să facem DHCP relativ agnostic - astfel, suportăm următoarele comenzi utilizând variabila dhcp_eth0. Implicit nu este setată nici una dintre opţiuni

  • release - eliberează adresa IP pentru re-utilizare
  • nodns - nu suprascrie /etc/resolv.conf
  • nontp - nu suprascrie /etc/ntp.conf
  • nonis - nu suprascrie /etc/yp.conf

Cod 3.1: Exemplu de configurare DHCP din /etc/conf.d/net

# Necesar doar când aveţi mai mult de un client DHCP instalat
modules=( "dhcpcd" )

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # Expirarea timpului după 10 secunde
dhcp_eth0="release nodns nontp nonis" # Preluăm doar o adresă

Notă: dhcpcd, udhcpc şi pump trimit numele de gazdă curent server-ului de DHCP implicit, deci nu trebuie să-l mai specificaţi.

3.d. Dispozitiv modem ADSL

Mai întâi trebuie să instală aplicaţia ADSL.

Cod 4.1: Instalarea pachetului rp-pppoe

# emerge net-dialup/rp-pppoe

Atenţie: baselayout-1.11.x suportă doar PPPOE. Sperăm că următoarele versiuni vor suporta PPPOA.

Acum, trebuie să configurăm eth0 să fie o interfaţă ADSL şi să introducem numele nostru de utilizator, prin actualizarea /etc/conf.d/net.

Cod 4.2: Configurarea eth0 pentru ADSL în /etc/conf.d/net

config_eth0=( "adsl" )
adsl_user_eth0="nume_utilizator"

La final, trebuie să definiţi numele dvs. de utilizator şi parola în /etc/ppp/pap-secrets.

Cod 4.3: exemplu de fişier /etc/ppp/pap-secrets

# Caracterul * este important
"username"  *  "password"

3.e. APIPA (Automatic Private IP Addressing - Adresare Automată de Adrese IP Private)

APIPA încearcă să găsească o adresă liberă în intervalul 169.254.0.0-169.254.255.255 prin emiterea de semnale arping către adrese aleatoare din acel interval pentru interfaţă. Dacă nu este primit nici un răspuns, atunci asociem acea adresă interfeţei.

Aceasta este folositor doar pentru reţelele LAN ce nu conţin nici un server DHCP şi nu vă conectaţi direct la internet, iar celelalte sisteme utilizează APIPA.

Pentru suportul APIPA, instalaţi net-misc/iputils sau net-analyzer/arping.

Cod 5.1: Configurarea APIPA din /etc/conf.d/net

# Încercaţi mai întâi DHCP - dacă aceasta returnează eroare, se trece la APIPA
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Utilizăm doar APIPA
config_eth0=( "apipa" )

3.f. Legarea prin Bonding

Pentru legarea conexiunilor instalaţi net-misc/ifenslave.

Bonding este utilizat pentru a mări banda de reţea. Dacă aveţi două plăci ce servesc aceeaşi reţea, le puteţi lega împreună, astfel ca aplicaţiile dvs. să le considere ca fiind doar o singură interfaţă, dar în realitate să le utilizeze pe amândouă.

Cod 6.1: configurarea legării prin bonding în /etc/conf.d/net

# Pentru a lega interfeţele împreună
slaves_bond0="eth0 eth1 eth2"

# Puteţi alege să nu asociaţi o adresă IP interfeţei rezultate prin legare
config_bond0=( "null" )

# Dependenţă pentru eth0, eth1 şi eth2, deoarece pot necesita configurare suplimentară
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

3.g. Interconectarea prin Bridge (suport 802.1d)

Pentru suportul interconectării prin bridge, instalaţi net-misc/bridge-utils.

Interconectarea prin bridge este utilizată pentru a uni două reţele. Spre exemplu, este posibil să aveţi un server conectat la internet printr-un dispozitiv modem şi o placă de acces wireless pentru a activa conectarea altor sisteme la internet prin dispozitivul modem ADSL. Puteţi crea o interconectare bridge pentru a uni cele două interfeţe.

Cod 7.1: Configuraţia bridge din /etc/conf.d/net

# Configuraţi sistemul bridge - "man btctl" pentru mai multe detalii
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Pentru a adăuga porturi sistemului bridge br0
bridge_br0="eth0 eth1"

# Trebuie să reconfiguraţi porturile la valori null pentru ca dhcp să nu pornească
config_eth0=( "null" )
config_eth1=( "null" )

# În final, asociaţi sistemului bridge o adresă - puteţi utiliza DHCP, de asemenea
config_br0=( "192.168.0.1/24" )

# Dependenţă de eth0 şi eth1, deoarece este posibil să necesite configurare suplimentară
depend_br0() {
  need net.eth0 net.eth1
}

Important: Pentru utilizarea unor setări bridge, este posibil să trebuiască consultarea documentaţiei despre numele de variabilă.

3.h. Adresa MAC

Nu trebuie să instalaţi nimic pentru a modifica adresa MAC a interfeţei dvs. dacă aveţi sys-apps/baselayout-1.11.14 sau mai nou şi doriţi să modificaţi la o anumită adresă MAC. Dar, dacă modificaţi cu o adresă aleatoare sau aveţi instalată o versiune de baselayout mai veche decât cea menţionată mai sus, atunci trebuie să instalaţi net-analyzer/macchanger.

Cod 8.1: Exemplu pentru modificarea adresei MAC

# Pentru a seta adresa MAC a interfeţei
mac_eth0="00:11:22:33:44:55"

# Pentru a alege aleator doar ultimii 2 octeţi
mac_eth0="random-ending"

# Pentru a alege aleator în cazul aceluiaşi tip de conexiune (spre ex. fibră,
# cupru, wireless) , pentru toţi producătorii
mac_eth0="random-samekind"

# Pentru a alege aleator între orice tip de conexiune (spre ex. fibră,
# cupru, wireless) , pentru toţi producătorii
mac_eth0="random-anykind"

# Pentru alegerea aleatoare în întregime - ATENŢIE: unele adrese MAC generate
# de această soluţie, este posibil să NU se comporte corect
mac_eth0="random-full"

3.i. Tunelarea

Nu trebuie să instalaţi nimic pentru tunelare, deoarece aplicaţia de manipulare a interfeţei vă poate efectua acest lucru.

Cod 9.1: Configurarea tunelării în /etc/conf.d/net

# Pentru tuneluri GRE
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# Pentru tuneluri IPIP
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Pentru configurarea interfeţei
config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) 

3.j. VLAN (suport 802.1q)

Pentru suport VLAN, instalaţi net-misc/vconfig.

Reţeaua Virtuală (Virtual LAN) este un grup de dispozitive de reţea ce se comportă ca şi când acestea ar fi fost conectate la un singur segment de reţea - chiar dacă este posibil să nu fie din acelaşi segment. Membrii VLAN se pot conecta numai la membrii aceleiaşi reţele VLAN, chiar dacă este posibil să împartă aceeaşi reţea fizică.

Cod 10.1: Configurarea VLAN din /etc/conf.d/net

# Specificaţi numerele VLAN pentru interfaţă, în felul următor
# Vă rugăm să vă asiguraţi că identificatorii VLAN nu conţin zerouri
vlans_eth0="1 2"

# Puteţi, de asemenea, să configuraţi reţeaua VLAN
# consultaţi pagina de manual a vconfig pentru mai multe detalii
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# Configurati interfaţa în mod normal
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Important: Pentru a utiliza unele setări VLAN, este posibil să trebuiască consultarea documentaţiei despre numele de variabilă.

4. Reţelistică Wireless

4.a. Introducere

Momentan suportăm setarea wireless, fie prin intermediul wireless-tools fie wpa_supplicant. Lucrul important de reţinut este să vă amintiţi că dvs. configuraţi reţelele wireless într-un context global, şi nu la nivelul interfeţei.

wpa_supplicant este cea mai bună soluţie, dar nu suportă toate driver-ele. Pentru o listă de driver-e suportate, consultaţi site-ul wpa_supplicant. De asemenea, wpa_supplicant se poate conecta doar la sesiunile SSID pentru care le-aţi configurat.

wireless-tools suportă aproape toate plăcile şi driver-ele, dar nu se poate conecta la dispozitive WPA, ci numai la dispozitive Access Point.

Atenţie: Driver-ul linux-wlan-ng nu este suportat de baselayout, momentan. Aceasta se datorează faptului că linux-wlan-ng are propriile setări şi configurare, care sunt complet diferite de toate celelalte. Dezvoltatorii linux-wlan-ng sunt presaţi să îşi modifice setările pentru wireless-tools - când se va întâmpla acest lucru, veţi putea utiliza linux-wlan-ng cu baselayout.

4.b. WPA Supplicant

WPA Supplicant este un pachet ce vă permite să vă conectaţi la dispozitive access point cu WPA. Setarea acestuia este destul de neclară, deoarece este încă în stadiu de beta - oricum, funcţionează corect în cele mai multe din cazuri.

Cod 2.1: Instalarea wpa_supplicant

# emerge net-wireless/wpa_supplicant

Important: Trebuie să aveţi CONFIG_PACKET activat în kernel-ul dvs. pentru ca wpa_supplicant să funcţioneze.

Acum trebuie să configurăm /etc/conf.d/net pentru a prefera wpa_supplicant în detrimentul wireless-tools (dacă ambele sunt instalate, wireless-tools este implicit).

Cod 2.2: configurarea /etc/conf.d/net pentru wpa_supplicant

# Preferăm wpa_supplicant în locul wireless-tools
modules=( "wpa_supplicant" )

# Este important să-i specificăm aplicaţiei wpa_supplicant ce driver
# să utilizeze, deoarece nu detectează foarte bine, încă
wpa_supplicant_eth0="-Dmadwifi"

Notă: Dacă utilizaţi driver-ul host-ap, va trebui să setaţi placa în modul Managed înainte de a putea fi utilizată corect cu wpa_supplicant. Puteţi utiliza iwconfig_eth0="mode managed" pentru acest lucru, în /etc/conf.d/net.

A fost simplu, nu? Oricum, tot trebuie să configurăm însăşi aplicaţia wpa_supplicant, ceea ce este mai dificil, în funcţie de cât de securizate sunt dispozitivele Access Point la care încercăm să ne conectăm. Exemplul de mai jos este preluat şi simplificat din /etc/wpa_supplicant.conf.example distribuit împreună cu wpa_supplicant.

Cod 2.3: un examplu /etc/wpa_supplicant.conf

# Linia de mai jos nu trebuie modificată, altfel va refuza să funcţioneze
ctrl_interface=/var/run/wpa_supplicant

# Asiguraţi-vă că numai utilizatorul root poate citi configuraţia WPA
ctrl_interface_group=0

# Lăsaţi wpa_supplicant să se ocupe de scanarea şi selectarea dispozitivului AP
ap_scan=1

# Caz simplu: WPA-PSK, PSK ca o frază de autentificare ASCII, permiterea tuturor cifrurilor valide
network={
  ssid="simplu"
  psk="fraza de autentificare foarte secreta"
  # Cu cât este mai mare prioritatea, cu atât mai curând se potriveşte
  priority=5
}

# La fel ca în cazul anterior, dar cerem identificatorul de scanare
# specifici pentru SSID (pentru dispozitivele AP ce resping difuzarea de SSID)
network={
  ssid="al doilea ssid"
  scan_ssid=1
  psk="fraza de autentificare foarte secreta"
  priority=2
}

# Este utilizat doar WPA-PSK. Orice combinaţie de cifru este acceptată
network={
  ssid="examplu"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Conexiune în text clar (fără WPA, fără IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Conexiune cu cheie WEP partajată (fără WPA, fără IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Conexiune cu cheie WEP partajată (fără WPA, fără IEEE 802.1X) utilizând autentificare
# pe bază de cheie partajată IEEE 802.11
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# Reţea IBSS/ad-hoc cu WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="secret passphrase"
}

4.c. Utilitare Wireless

Setările Iniţiale şi Modul Managed

Utilitarele Wireless oferă o modalitate fundamentală generică de a configura interfeţele wireless la nivelul de securitate WEP. În timp ce WEP este o metodă de securitate slabă, aceasta este şi ce mai predominantă.

Configurarea Utilitarelor Wireless este controlată de câteva variabile principale. Exemplul de fişier de configuraţie de mai jos ar trebui să descrie tot ceea ce vă este necesar. Un lucru de reţinut este faptul că nici o configuraţie nu reprezintă "conectarea la cel mai puternic dispozitiv Access Point neencriptat" - vom încerca mereu să vă conectăm la ceva.

Cod 3.1: Instalarea wireless-tools

# emerge net-wireless/wireless-tools

Notă: Deşi puteţi să stocaţi setările dvs. wireless, în /etc/conf.d/wireless, acest ghid recomandă să le stocaţi în /etc/conf.d/net

Important: Va trebui să consultaţi documentaţia despre numele variabilei.

Cod 3.2: setări exemplu pentru iwconfig în /etc/conf.d/net

# Preferăm iwconfig în locul wpa_supplicant
modules=( "iwconfig" )

# Configuraţi cheile WEP pentru dispozitivele Access Point denumite ESSID1 şi ESSID2
# Puteţi configura până la 4 chei WEP, dar numai una poate fi activă în
# orice moment, deci vom oferi un index implicit [1] pentru setarea
# cheii [1] şi apoi, din nou, să modificăm cheia activă la [1].
#
# Prefixarea cheii cu s: înseamnă că este o cheie ASCII, altfel o cheie HEX
#
# enc open specifică securitate liberă (cea mai securizată)
# enc restricted specifică securitate mai restrictivă (mai puţin securizat)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Setarea de mai jos funcţionează doar când scanăm după dispozitive
# Access Point disponibile

# Uneori, mai mult de un dispozitiv Access Point este vizibil, deci
# trebuie să definim unul preferat la care să ne conectăm
preferred_aps=( "ESSID1" "ESSID2" )

Setări pentru Selecţia Fină a Dispozitivelor Access Point

Puteţi adăuga unele opţiuni pentru a finisa selecţia dispozitivelor dvs. Access Point, dar acestea nu sunt necesare, în mod normal.

Puteţi decide dacă ne conectăm doar la dispozitivele Access Point preferate, sau nu. Implicit, dacă tot ce este configurat returnează eroare şi putem să ne conectăm la un dispozitiv Access Point necriptat, atunci vom face acest lucru. Aceasta poate fi controlată prin variabila associate_order. Iată un tabel de valori şi cum controlează acestea acest comportament.

Valoare Descriere
any Comportamentul implicit
preferredonly Ne vom conecta doar la dispozitivele AP vizibile din lista preferată
forcepreferred Vom forţa conectarea la dispozitivele AP în ordinea preferată, dacă nu sunt detectate la o scanare
forcepreferredonly Nu scanează după dispozitive Access Point - în loc, se încearcă conectarea la fiecare, în ordine
forceany La fel ca în cazul forcepreferred + se conectează la orice alt dispozitiv AP disponibil

În sfârşit, avem o selecţie blacklist_aps şi una unique_ap. blacklist_aps funcţionează similar cu preferred_aps. unique_ap este o valoare yes (da) sau no (nu) ce indică dacă o a doua interfaţă wireless se poate conecta la acelaşi dispozitiv Access Point ca prima interfaţă.

Cod 3.3: exemplu blacklist_aps şi unique_ap

# Uneori nu doriţi niciodată conectarea la anumite dispozitive access point
blacklist_aps=( "ESSID3" "ESSID4" )

# Dacă aveţi una sau mai multe plăci wireless, puteţi să specificaţi,
# dacă doriţi, să permiteţi fiecărei plăci să se asocieze cu acelaşi
# dispozitiv Access Point sau nu
# Valorile sunt "yes" şi "no"
# Implicit este "yes"
unique_ap="yes"

Modurile Ad-Hoc şi Master

Dacă doriţi să vă setaţi ca pe un nod Ad-Hoc în cazul în care nu reuşiţi să vă conectaţi la nici un dispozitiv Access Point în modul managed, puteţi face şi acest lucru.

Cod 3.4: revenire la modul ad-hoc

adhoc_essid_eth0="Acest Nod Adhoc"

Ce spuneţi de conectarea la reţele Ad-Hoc sau rularea în modul Master pentru a deveni un dispozitiv Access Point? Iată o configuraţie doar pentru acest lucru! Puteţi specifica cheile WEP, aşa cum am exemplificat anterior.

Cod 3.5: configuraţie exemplu pentru ad-hoc/master

# Setaţi modul - poate fi managed (implicit), ad-hoc sau master
# Nu toate driver-ele suportă toate modurile
mode_eth0="ad-hoc"

# Setaţi valoarea ESSID pentru interfaţă
# În modul managed, aceasta forţează interfaţa să încerce să se conecteze
# la dispozitivul ESSID şi la nimic altceva
essid_eth0="Acest Nod Adhoc"

# Utilizăm canalul 3, dacă nu specificaţi unul
channel_eth0="9"

Important: Nota de mai jos este copiată exact din documentaţia BSD wavelan, ce poate fi găsită în documentaţia NetBSD. Există 14 canale posibile; ni s-a precizat că numerele 1-11 pentru canale sunt legale pentru America de Nord, canalele 1-13 pentru majoritatea ţărilor din Europa, canalele 10-13 pentru Franţa şi doar canalul 14 pentru Japonia. Dacă aveţi îndoieli, vă rugăm să consultaţi documentaţia ce însoţeşte dispozitivul dvs. access point. Asiguraţi-vă că acel canal pe care îl selectaţi este acelaşi cu al dispozitivului access point (sau al celeilalte plăci din reţeaua ad-hoc). Implicit pentru plăcile vândute în America de Nord şi cea mai mare parte a Europei este 3; implicit pentru plăcile vândute în Franţa este 11 şi pentru cele vândute în Japonia, implicit este 14.

Probleme cu Utilitarele Wireless

Mai există unele variabile ce le puteţi utiliza pentru a vă activa şi rula prin intermediul dispozitivului dvs. wireless din cauza problemelor cauzate de driver sau mediu. Iată un table cu alte lucruri pe care le puteţi încerca.

Variabilă Valoarea Implicită Descriere
iwconfig_eth0 Consultaţi pagina de manual iwconfig pentru detalii despre parametrii ce pot fi transmişi utilitarului iwconfig
iwpriv_eth0 Consultaţi pagina de manual iwpriv pentru detalii despre parametrii ce pot fi transmişi utilitarului iwpriv
sleep_scan_eth0 0 Numărul de secunde de aşteptare înainte de a începe scanarea. Aceasta este necesară când driver-ul/componenta firmware are nevoie de mai mult timp de activare înainte de a fi utilizată.
sleep_associate_eth0 5 Numărul de secunde de aşteptare al interfaţei asociate cu dispozitivul Access Point, înainte de a o încerca pe următoarea
associate_test_eth0 MAC Unele driver-e nu reajustează adresa MAC asociată cu una invalidă când returnează eroare sau încearcă să se asocieze. Unele driver-e nu reajustează nivelul de calitate când returnează eroare sau încearcă să se asocieze. Setările valide sunt MAC, quality şi all.
scan_mode_eth0 Unele driver-e trebuie să scaneze în modul ad-hoc, deci dacă scanarea returnează eroare, încercaţi să setaţi ad-hoc, aici
iwpriv_scan_pre_eth0 Trimite unele comenzi iwpriv interfeţei, înainte de scanare. Consultaţi pagina de manual iwpriv pentru mai multe detalii
iwpriv_scan_post_eth0 Trimite unele comenzi iwpriv interfeţei, după scanare. Consultaţi pagina de manual iwpriv pentru mai multe detalii

4.d. Definirea configuaţiei de reţea per ESSID

Uneori, când încercaţi să vă conectaţi la ESSID1, aveţi nevoie de o adresă IP statică, iar în momentul în care vă conectaţi la ESSID2, aveţi nevoie de DHCP. De fapt, majoritatea variabilelor de modul pot fi modificate pentru fiecare ESSID. Iată cum puteţi face acest lucru.

Notă: Acestea funcţionează dacă utilizaţi WPA Supplicant sau Wireless Tools.

Important: Va trebui să consultaţi documentaţia despre numele variabilei.

Cod 4.1: suprascrieţi setările de reţea per ESSID

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# Putem defini server-e de nume, precum şi alte setări
# NOTĂ: DHCP va suprascrie aceste setări dacă nu i se precizează să nu facă acest lucru
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# Suprascrieţi adresa MAC a dispozitivului Access Point
# Este folositor dacă mergeţi în diferite locaţii ce au acelaşi ESSID
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. Adăugarea Funcţionalităţii

5.a. Funcţii standard

Patru funcţii pot fi definite ce vor fi executate în jurul operaţiilor start/stop. Funcţiile sunt denumite cu numele interfeţei la început, pentru ca o funcţie să poată controla mai multe adaptoare.

Valorile returnate pentru funcţiile preup() şi predown() ar trebui să fie 0 (succes) pentru a indica că procesul de configurare sau deconfigurare poate continua. Dacă preup() returnează o valoarea non-zero, atunci configurarea interfeţei va fi întreruptă. Dacă predown() returnează o valoare non-zero, atunci interfeţei nu i se va permite continuarea deconfigurării.

Valorile returnate de funcţiile postup() şi postdown() sunt ignorate deoarece nu se poate efectua nimic dacă acestea returnează eroare.

${IFACE} este setată pentru interfaţa care trebuie să fie activată/dezactivată. ${IFVAR} este ${IFACE} convertit la un nume de variabilă permis de bash.

Cod 1.1: exemple de funcţii pre/post de activare/dezactivare

preup() {
  # Testăm conectivitatea interfeţei înainte de a o activa.
  # Aceasta funcţionează doar pentru unele adaptoare de
  # reţea şi necesită ca pachetul mii-diag să fie instalat.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Testăm conectivitatea interfeţei înainte de a o activa.
  # Aceasta funcţionează doar pentru unele adaptoare de
  # reţea şi necesită ca pachetul ethtool să fie instalat.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Amintiţi-vă să returnaţi valoarea 0 în cazul succesului
  return 0
}

predown() {
  # Implicită în script este testarea directorului rădăcină
  # NFS şi interzicerea dezactivării interfeţelor în acest caz.
  # Notaţi faptul că, dacă specificaţi o funcţie predown() veţi
  # suprascrie această logică. Iat-o în cazul în care aveţi nevoie...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Amintiţi-vă să returnaţi valoarea 0 în cazul succesului
  return 0
}

postup() {
  # Această funcţie poate fi utilizată, spre exemplu,
  # pentru înregistrarea unui serviciu DNS dinamic. O altă
  # posibilitate ar fi să trimiteţi/primiţi mesaje, odată
  # ce interfaţa se activează.
  return 0
}

postdown() {
  # Această funcţie este prezentă, mai mult pentru completare...
  # Nu m-am gândit la nici o funcţionalitate deosebită, încă ;-)
  return 0
}

5.b. Funcţii standard pentru utilitare wireless

Notă: Aceasta nu funcţiona cu WPA Supplicant - dar variabilele ${ESSID} şi ${ESSIDVAR} sunt disponibile în funcţia postup().

Două funcţii pot fi definite ce vor fi invocate înainte şi după funcţia asociată. Aceste funcţii sunt invocate având numele sufixat cu numele interfeţei pentru ca o singură funcţie să poată controla mai multe adaptoare.

Valorile returnate pentru funcţia postassociate() ar trebui să fie 0 (succes) pentru indicarea continuării configurării sau deconfigurării. Dacă funcţia postassociate() returnează o valoare non-zero, atunci configurarea interfeţei va fi anulată.

Valoarea returnată pentru funcţia postassociate() este ignorată deoarece nu rămâne nici o acţiune de efectuat dacă aceasta indică eroare.

${ESSID} este setată exact la valoarea ESSID a dispozitivului AP la care vă conectaţi. ${ESSIDVAR} este ${ESSID} convertită la un nume de variabilă permis de bash.

Cod 2.1: funcţiile de asociere pre/post

preassociate() {
  # Rândurile de mai jos adaugă două variabile de configurare leap_user_ESSID
  # şi leap_pass_ESSID. Când sunt ambele configurate pentru sesiunea ESSID la care
  # sunteţi conectaţi, atunci rulăm script-ul CISCO LEAP

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Această funcţie este prezentă, mai mult pentru completare...
  # Nu m-am gândit la nici o funcţionalitate deosebită, încă ;-)

  return 0
}

Notă: ${ESSID} şi ${ESSIDVAR} nu sunt disponibile în funcţiile predown() şi postdown().

6. Administrarea Reţelei

6.a. Administrarea Reţelei

Dacă dvs. şi sistemul dvs. sunt mereu în mişcare, este posibil să nu aveţi mereu un cablu ethernet sau o priză sau un dispozitiv access point disponibil. De asemenea, am dori ca reţeaua să funcţioneze automat când un cablu ethernet este introdus în priză sau când un dispozitiv access point este găsit.

Iată câteva utilitare ce vă pot ajuta în acest sens.

Notă: Acest document tratează doar ifplugd, dar există şi alte alternative pe care le puteţi încerca, cum este quickswitch.

6.b. ifplugd

ifplugd este o aplicaţie daemon ce porneşte şi opreşte interfeţele în momentul când un cablu ethernet este introdus sau scos. Poate, de asemenea, să manipuleze detectarea asocierii cu un dispozitiv Access Point sau în momentul în care unul se află în rază.

Cod 2.1: Instalarea ifplugd

# emerge sys-apps/ifplugd

Configurarea pentru ifplugd este destul de la obiect. Fişierul de configurare este menţinut în /etc/conf.d/ifplugd. Rulaţi man ifplugd pentru detalii despre funcţionalitatea acestor variabile.

Cod 2.2: configuraţie simplă ifplug

# Definiţi interfeţele monitorizate
INTERFACES="eth0"

AUTO="no"
BEEP="yes"
IGNORE_FAIL="yes"
IGNORE_FAIL_POSITIVE="no"
IGNORE_RETVAL="yes"
POLL_TIME="1"
DELAY_UP="0"
DELAY_DOWN="0"
API_MODE="auto"
SHUTDOWN="no"
WAIT_ON_FORK="no"
MONITOR="no"
ARGS=""

# Parametri adiţionali pentru ifplugd pentru interfaţa specificată.
# Notaţi că variabila globală este ignorată în momentul setării unei variabile
# ca aceasta, pentru o interfaţă
MONITOR_wlan0="yes"
DELAY_UP_wlan0="5"
DELAY_DOWN_wlan0="5"

Imprimare

Actualizat la 27 Mai 2006

Versiunea originală a acestui document a fost actualizată ultima dată la 1 Iunie 2014

Sumar: Acesta este Manualul Gentoo, un efort de a centraliza informaţiile Gentoo/Linux. Acest manual conţine instrucţiunile de instalare pentru o instalare bazată pe o conexiune la internet pentru sistemele MIPS şi părţi despre lucrul cu Gentoo şi Portage.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Dezvoltator Gentoo x86

Tavis Ormandy
Dezvoltator Gentoo Alpha

Jason Huebel
Dezvoltator Gentoo x86

Guy Martin
Dezvoltator Gentoo HPPA

Pieter Van den Abeele
Dezvoltator Gentoo PPC

Joe Kallar
Dezvoltator Gentoo SPARC

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Stuart Longland
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Corector

Gerald J. Normandin Jr.
Corector

Donnie Berkholz
Corector

Ken Nowack
Corector

Lars Weiler
Contribuitor

Alin Dobre
Translator Responsabil

Ion Mudreac
Translator

Teddy Drăguţă
Translator

Talos Teodor
Translator

Dragoş Toma
Translator

Muntean Alex
Translator

George Nistorică
Translator

Emil Sîrbu
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.