Gentoo Logo

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


Ghid Genkernel pentru Gentoo Linux

Conţinut:

1.  Introducere

Raţionalism

Pentru utilizatorii ce nu sunt obişnuiţi cu compilarea de kernel, genkernel este un utilitar pentru automatizarea acestui proces. Vă poate ajuta să creaţi o imagine de kernel asemănătoare cu cele disponibile pe mediile Installation CD ale Gentoo, ce sunt proiectate pentru a detecta automat configuraţia hardware a sistemului dvs. Unii utilizatori pot fi, de asemenea, interesaţi în utilizarea genkernel pentru iniţializarea necesităţilor hardware şi a unui kernel funcţional înainte de a porni sistemul. Deoarece genkernel vă compilează automat modulele de kernel, puteţi utiliza componente hardware ce pot necesita anumiţi parametri de module pentru a fi încărcate pentru operarea corectă.

Audienţa Ţintă

Dacă sunteţi, fie nesiguri despre modalitatea de compilare a unui kernel, sau sunteţi doar nefamiliari cu configuraţia hardware, genkernel este un utilitar foarte la-ndemână. Este proiectat pentru a înlătura chinul procesului de compilare a kernel-ului şi suportă cele mai multe componente hardware, implicit.

Oricum, dacă doriţi să ştiţi ce driver-e sunt necesare pentru sistemul dvs., este posibil să puteţi reduce timpul de compilare a kernel-ului. Aceasta este posibil, deoarece îi puteţi specifica utilitarului genkernel să compileze doar driver-ele relevante pentru componentele dvs. hardware. Deseori, numărul driver-elor necesare sistemului dvs. va fi mai mic (implicând un timp de compilare al kernel-lui redus) decât configuraţia implicită oferită.

Instalarea genkernel

Pentru a obţine genkernel, rulaţi emerge genkernel din linia de comandă. Dacă utilizaţi Platforma de Referinţă Gentoo (eng.: Gentoo Reference Platform - GRP), amintiţi-vă să instalaţi pachetele binare prin adăugarea opţiunii -k comenzii emerge. Deoarece pachetele GRP conţin o versiune veche de genkernel, opţiunile pot diferi. În oricare caz, consultaţi genkernel --help pentru a observa modul de utilizare a versiunii de genkernel instalată pe sistemul dvs.

2.  Lucrul cu genkernel

Modul de utilizare al genkernel

Deşi există mai multe modalităţi de a rula genkernel, cea mai puţin intruzivă abordare este oferită de genkernel all. În acest caz, o configuraţie generică ce funcţionează corect pe majoritatea sistemelor este utilizată. Aşa cum am menţionat anterior, această abordare nu este una fără dezavantaje; majoritatea modulelor create sunt nefolositoare pentru utilizatorul comun şi poate mări timpul de compilare. Mai jos aveţi o ilustrare a unei abordări mai eficiente, obţinută prin transmiterea anumitor opţiuni utilitarului genkernel, ca root:

Cod 2.1: Rularea genkernel (cu alte opţiuni)

# genkernel --bootsplash --no-install --no-clean --menuconfig all

Operaţia de mai sus cauzează genkernel să creeze un kernel cu bootsplash activat (--bootsplash) ce va trebui instalat manual (--no-install). În timpul pregătirii structurii surselor de kernel, genkernel nu va curăţa nici un modul deja existent prezent în structura de surse (--no-clean). Un utilitar bazat pe meniuri pentru configurarea kernel-ului va fi afişat pentru a permite utilizatorului să selecteze ce module vor fi compilate pentru sistem (--menuconfig).

Există şi alte opţiuni ce modifică rezultatul oferit de genkernel. Spre exemplu, înlocuirea opţiunii --no install cu opţiunea --install îi permite utilitarului genkernel să instaleze automat noua imagine de kernel în directorul /boot. Utilizarea opţiunii --mountboot îi permite utilitarului genkernel să mount-eze partiţia dvs. /boot în mod automat, dacă este necesar.

Amintiţi-vă, genkernel este proiectat pentru a vă uşura considerabil compilarea de kernel. Din acest motiv, genkernel deţine unele opţiuni pentru a uşura efortul de compilare al kernel-ului. Spre exemplu, există opţiuni pentru a ajuta configurarea kernel-ului, în timp ce alte opţiuni afectează compilarea efectivă. Unele opţiuni vă ajută chiar să depanaţi procesul de compilare. Pentru cei interesaţi în optimizări viitoare, există opţiuni ce afectează asamblarea kernel-ului, împachetarea şi chiar iniţializarea kernel-ului.

Restul acestui capitol examinează funcţionalitatea unor diverse opţiuni şi acţiuni disponibile pentru genkernel. Unele din aceste opţiuni au variante ce efectuează o operaţie convergentă. Variantele convergente deţin prefixul no- şi efectele acestora sunt afişate între paranteze pătrate, [].

Opţiuni de Configurare

Opţiunile de configurare afişate mai jos sunt prezente pentru a vă ajuta în decizia căror funcţionalităţi să fie activate şi care nu, în kernel, înainte de compilare. Puteţi chiar alege dacă fişierul de configurare să fie salvat sau nu. Următoarele opţiuni sunt în special de configurare:

  • --no-menuconfig: Activează [sau dezactivează] comanda make menuconfig (ce invocă un utilitar de configurare a kernel-ului interactiv, bazat pe meniuri), înainte de a compila kernel-ul.
  • --gconfig: Oferă utilitarul de configurare al kernel-ului ce depinde de librăriile GTK+. Avantajul acestei opţiuni este că majoritatea utilizatorilor îl găsesc mai uşor şi mai clar de configurat kernel-ul prin utilizarea acestui utilitar, deoarece se bazează pe sistemul de ferestre X. Dezavantajul acestei opţiuni este că aveţi nevoie de sistemul de ferestre X pentru a o utiliza, deci nu va funcţiona în linie de comandă.
  • --xconfig: Oferă un utilitar de configurare a kernel-ului ce depinde de librăriile QT.Avantajul acestei opţiuni este că majoritatea utilizatorilor îl găsesc mai uşor şi mai clar de configurat kernel-ul prin utilizarea acestui utilitar, deoarece se bazează pe sistemul de ferestre X. Dezavantajul acestei opţiuni este că aveţi nevoie de sistemul de ferestre X pentru a o utiliza, deci nu va funcţiona în linie de comandă.
  • --no-save-config: Salvează [sau nu salvează] configurarea kernel-ului într-un fişier din directorul /etc/kernels/ pentru o utilizare ulterioară.

Opţiuni de Compilare

Următoarele opţiuni au efect, de obicei, în timpul compilării efective:

  • --kerneldir=/calea/catre/surse/: Specifică o locaţie alternativă a surselor de kernel, în locul celei implicite, /usr/src/linux/.
  • --kernel-config=/calea/catre/fisierul-de-configurare: Specifică ce configuraţie alternativă de kernel va fi utilizată, în locul fişierului implicit, /calea/catre/surse/.config.
  • --module-prefix=/calea/catre/directorul-prefix/: Specifică un prefix către directorul unde modulele de kernel vor fi instalate (calea implicită este directorul /lib/modules/.)
  • --no-clean: Activează [sau dezactivează] comanda make clean înainte de compilarea kernel-ului dvs. Comanda make clean îndepărtează toate fişierele obiect şi dependenţele din structura de surse a kernel-ului.
  • --no-mrproper: Activează [sau dezactivează] comanda make mrproper înainte de compilarea kernel-ului. La fel ca şi comanda make clean, make mrproper îndepărtează toate fişierele obiect şi dependenţele din structura de surse a kernel-ului. Oricum, orice fişiere de configurare anterioare (din /calea/catre/surse/.config sau /calea/catre/surse/.config.old) vor fi de asemenea îndepărtate din structura de surse de kernel.
  • --oldconfig: Execută comanda make oldconfig, ce încearcă să colecteze informaţii de configurare pentru arhitectura sistemului dintr-un script generic din /usr/share/genkernel/. Acesta este un proces non-interactiv; nu este cerut nimic din partea utilizatorului. De asemenea, dacă --oldconfig este utilizat în conjuncţie cu --clean, ultima opţiune este negată, rezultând în activarea opţiunii --no-clean.
  • --callback="echo hello": Execută argumentele specificate (echo hello, în acest caz) după ce kernel-ul şi modulele relevante au fost construite, dar înainte de a compila imaginea initrd. Aceasta poate fi utilă în cazul în care doriţi să instalaţi module externe în imaginea initrd prin instalarea cu ajutorul emerge a pachetelor relevante cu ajutorul opţiunii de callback, şi apoi redefinirea unui grup de module genkernel.
  • --no-install: Activează [sau dezactivează] comanda make install, ce instalează noua dvs. imagine de kernel, fişierul de configurare, imaginea initrd şi harta sistem în partiţia dvs. mount-ată de boot. Orice module compilate vor fi instalate, de asemenea.
  • --no-initrdmodules: Opreşte operaţia de copiere a oricărui modul în imaginea initrd creată de genkernel. Această opţiune este o excepţie de la regula prefixului no-; omiterea acestui prefix, creează o opţiune invalidă de kernel.
  • --genzimage: Crează o imagine initrd, înainte de imaginea de kernel (Acest truc se aplică, momentan, doar sistemelor PPC Pegasos.)

Opţiuni pentru Compilator

Următoarele opţiuni sunt suportate de genkernel, şi sunt transmise aplicaţiilor relevante, în timp ce kernel-ul este asamblat. Aceste opţiuni afectează compilatorul utilizat pentru procesul de compilare a kernel-ului, dar la un nivel mult mai inferior.

  • --kernel-cc=unAnumeCompilator: Specifică un compilator invocat în timpul procesului de compilare a kernel-ului.
  • --kernel-ld=unAnumeEditorDeLegături: Specifică un editor de legături invocat în timpul procesului de compilare a kernel-ului.
  • --kernel-as=unAnumeAsamblor: Specifică aplicaţia pentru asamblare invocată în timpul procesului de compilare a kernel-ului.
  • --kernel-make=oAnumeAplicaţieMake: Specifică o alternativă la utilitarul GNU make invocat în timpul procesului de compilare a kernel-ului.
  • --utils-cc=unAnumeCompilator: Specifică aplicaţia compilator invocată în timpul compilării utilitarelor de suport.
  • --utils-ld=unAnumeEditorDeLegături: Specifică editorul de legături invocat în timpul compilării utilitarelor de suport.
  • --utils-as=unAnumeAsamblor: Specifică aplicaţia pentru asamblare invocată în timpul compilării utilitarelor de suport.
  • --utils-make=oAnumeAplicaţieMake: Specifică o alternativă la utilitarul GNU make invocat în timpul compilării utilitarelor de suport.
  • --makeopts=-jX: Specifică numărul de fire de execuţie concurente ce pot fi implementate de aplicaţia make în timp ce kernel-ul (şi utilitarele) sunt compilate. Variabila 'X' este numărul obţinut prin adăugarea numărului unu (1) numărului de procesoare utilizate de sistem. Deci, pentru un sistem cu un singur procesor, opţiunea potrivită este -j2; un sistem cu două procesoare va utiliza opţiunea -j3, şi aşa mai departe. (Un sistem cu un singur procesor ce suportă Tehnologia Hyper-Threading™ (HT) poate utiliza opţiunea -j3 oferită de suportul Symmetric Multi-Processing (SMP) activat în kernel.)

Opţiuni de Depanare

Utilizarea opţiunilor de depanare în timpul procesului de compilare a kernel-ului, controlează cantitatea de informaţie raportată, ca şi prezentarea datelor indicate.

  • --debuglevel=verblevel: Controlează nivelul de informare pentru datele oferite de genkernel. Variabila verblevel este un număr întreg între 0 şi 5. Nivelul '0' reprezintă afişare minimală, în timp ce '5' oferă atâta informaţie cât este posibilă despre activităţile genkernel în timpul procesului de compilare a kernel-ului.
  • --debugfile=/calea/catre/fisierul-de-iesire: Ignoră valoarea setată de argumentul --debuglevel şi transmite toate datele de depanare produse de genkernel în fişierul de ieşire specificat, ce este stocat în /var/log/genkernel.log, implicit.
  • --no-color: Activează [sau dezactivează] afişarea colorată a informaţiei de depanare (raportată de genkernel) utilizând secvenţe escape.

Opţiuni de Iniţializare

Opţiunile indicate aici sunt utilizate pentru a crea anumite efecte în timpul pornirii sistemului. Unele din aceste opţiuni sunt în primul rând pentru estetică, în timp ce altele pot fi esenţiale pentru activarea anumitor funcţionalităţi în sistem.

  • --no-bootsplash: Activează [sau dezactivează] suportul pentru bootsplash în imaginea initrd compilată de genkernel. Funcţionalitatea bootsplash este suportată pe un număr restrâns de arhitecturi, fiind necesar, de asemenea, un kernel ce suportă bootsplash.
  • --no-gensplash: Activează [sau dezactivează] suportul pentru gensplash în imaginea initrd compilată de genkernel. Utilitarul gensplash este intenţionat ca fiind un înlocuitor al lui bootsplash şi este proiectat pentru utilizarea în seriile de kernel 2.6.x. Pentru a suprascrie tema implicită utilizată de gensplash, utilizaţi --gensplash=TemaPreferata (unde TemaPreferata este titlul unuia din directoarele din locaţia /etc/splash/.
  • --gensplash-res=RezolutiaPreferata: Această opţiune vă permite să selectaţi ce rezoluţii de afişare a imaginii splash vor fi suportate de imaginea initrd, în timpul pornirii sistemului. Aceasta este utilă din două motive: Primul, este faptul că puteţi selecta doar rezoluţiile de afişare a imaginii splash, ce sunt relevante pentru sistemul dvs. Al doilea este faptul că evitaţi creşterea nenecesară a spaţiului de disc necesitat de imaginea initrd (deoarece initrd nu trebuie să suporte rezoluţii irelevante pentru sistemul dvs.) Oricum, puteţi omite această opţiune, dacă kernel-ul este construit pentru un mediu Installation CD; aceasta permite suportul gensplash pentru toate rezoluţiile posibile.
  • --do-keymap-auto: Forţează selecţia dispunerii tastelor în timpul secvenţei de boot.
  • --lvm2: Include suport pentru stocarea prin intermediul Logical Volume Management (LVM2) din binare statice, dacă sunt disponibile pentru sistem. Binarele relevante (statice) de LVM2 sunt compilate, dacă nu sunt disponibile. Asiguraţi-vă că instalaţi pachetul lvm2 în sistemul dvs., cu emerge lvm2 înainte de a activa această opţiune, şi să consultaţi ghidul pentru Instalarea LVM2 în Gentoo.
  • --evms2: Include suport de stocare utilizând Enterprise Volume Management System (EVMS2), în cazul în care este disponibil. Asiguraţi-vă că instalaţi pachetul evms în sistemul dvs., cu USE=static emerge evms2 înainte de a utiliza această opţiune (genkernel). (Omiterea indicatorului USE=static în timpul instalării pachetului nu va putea include binarele statice necesare, cauzând eroare.)
  • --dmraid: Include suport pentru DMRAID; utilitarul ce creează scheme RAID utilizând subsistemul device-mapper din kernel. DMRAID descoperă, activează, dezactivează şi afişează proprietăţi ale seturilor software de RAID (ATARAID, spre exemplu) şi partiţiile DOS conţinute.
  • --linuxrc=/calea/catre/script-ul/dvs/linuxrc: Specifică un script creat personalizat linuxrc — un script ce este iniţializat în timpul stadiului de pornire al unui kernel, înainte de procesul de boot efectiv. (Un fişier implicit linuxrc ar trebui să se afle în directorul /usr/share/genkernel/.) Acest script vă permite să boot-aţi într-un kernel mic, modularizat şi să încărcaţi driver-ele necesare (ca module) de sistem.
  • --cachedir=/calea/catre/alt/director/: Suprascrie locaţia de cache implicită, utilizată în timpul compilării kernel-ului.
  • --tempdir=/calea/catre/noul/director-temporar/: Specifică locaţia directorului temporar utilizat de genkernel în timpul compilării kernel-ului.
  • --unionfs: Include suport pentru Sistemul de Fişiere de Unificare în imaginea initrd.

Opţiuni Diverse

Opţiunile afişate mai jos sunt suportate de genkernel, dar nu se încadrează perfect în nici una din celelalte categorii:

  • --mountboot: Detectează dacă sau nu directorul /boot/ trebuie mount-at într-o partiţie separată. Va verifica script-ul /etc/fstab pentru instrucţiuni despre modalitatea de mount-are a partiţiei boot pe un sistem de fişiere (dacă este nevoie).
  • --kernname=Nume: Vă permite să modificaţi numele kernel-ului şi a imaginilor initrd din directorul /boot/, pentru ca imaginile produse să fie kernel-Nume-versiune şi initramfs-Nume-versiune.

Acţiuni Posibile

O acţiune îi specifică utilitarului genkernel ce anume să construiască. Momentan, următoarele acţiuni sunt suportate:

  • initrd: Construieşte doar imaginea initrd
  • bzImage: Construieşte doar imaginea de kernel
  • kernel: Construieşte doar imaginea de kernel şi modulele
  • all: Construieşte toate stadiile — imaginea initrd, imaginea de kernel şi modulele.

Ultima acţiune, all, este recomdandată pentru majoritatea utilizatorilor, deoarece construieşte stagiile necesare pentru un kernel funcţional. Amintiţi-vă, o acţiune doar îi specifică aplicaţiei genkernel ce să construiască, nu ce să instaleze.

Configurarea Aplicaţiei Bootloader

Pentru a seta genkernel să funcţioneze cu aplicaţia dvs. bootloader, trebuie aplicate trei sau patru paşi fişierului de configurare al aplicaţiei dvs. bootloader:

  1. Adăugaţi root=/dev/ram0 şi init=/linuxrc parametrilor de kernel ce sunt transmişi imaginii de kernel.
  2. Adăugaţi real_root=/dev/hda3, spre exemplu, parametrilor de kernel transmişi imaginii de kernel, dacă /dev/hda3 conţine partiţia dvs. rădăcină.
  3. Dacă utilizaţi bootsplash, adăugaţi un mod cum ar fi vga=0x317 parametrilor transmişi imaginii de kernel şi adăugaţi, de asemenea, splash=verbose sau splash=silent în funcţie de nivelul de informare necesar din aplicaţia dvs. bootloader.
  4. Adăugaţi informaţia initrd, aşa cum este cerut de aplicaţia bootloader. Consultaţi Capitolul despre Configurarea Aplicaţiei Bootloader din Manualul Gentoo pentru detalii despre modalitatea de vă configura aplicaţia bootloader pentru a putea încărca imagini initrd.

3.  Opţiuni de Configurare

Editarea /etc/genkernel.conf

Transmiterea de opţiuni utilitarului genkernel din linie de comandă, poate fi greoaie, în special când aveţi o duzină de parametri:

Cod 3.1: Rularea genkernel (supraîncărcat cu opţiuni)

# genkernel --debuglevel=5 --no-color --no-mrproper --clean --gensplash \ 
--kerneldir=/calea/catre/surse/de/kernel/alternative --install --menuconfig \ 
--kernel-config=/calea/catre/fisierul-de-configurare/preferat --save-config --mountboot all

Din fericire, există un fişier de configurare unde majoritatea opţiunilor de bază pot fi setate (sau modificate)în funcţie de necesităţi. Ceea ce urmează este o trecere în revistă a opţiunilor mai relevante:

  • MENUCONFIG=[yes|no]: Această opţiune este echivalentă cu parametrul --menuconfig utilizat de genkernel, care, la rându-i utilizează comanda make menuconfig pentru a invoca utilitarul de configurare a kernel-ului din linie de comandă. Pentru a invoca utilitarul automat în timpul configurării kernel-ului prin intermediul acestui script, setaţi opţiunea cu valoarea 'yes', aici; altfel, alegeţi 'no'.
  • CLEAN=[yes|no]: Setarea acestei opţiuni cu valoarea 'yes' este echivalentă cu parametrul --clean utilizat de genkernel, şi invocă comanda make clean ce şterge toate fişierele obiect şi dependenţele din structura de surse de kernel. Setarea acestei opţiuni cu valoare 'no' creează un efect de cascadă — este echivalentă cu parametrul --no-clean din genkernel, ce dezactivează parametrul genkernel --no-mrproper — în esenţă anulând comanda make mrproper.
  • MRPROPER=[yes|no]: Setarea acestei opţiuni cu valoarea 'yes' este echivalentă cu paramtetrul --mrproper utilizat de genkernel, şi invocă comanda make mrproper, ce şterge structura de surse pentru kernel de fişiere de configurare. Selectarea 'no' aici, este echivalentă cu parametrul --no-mrproper din genkernel, ce dezactivează comanda make mrproper.
  • MOUNTBOOT=[yes|no]: Setarea acestei opţiuni cu valoarea 'yes' este echivalentă cu parametrul --mountboot şi mount-ează automat directorul /boot/ (dacă este necesar) în timpul compilării. Dacă directorul /boot/ este stocat pe o altă partiţie, luaţi în considerare activarea acestei opţiuni; va face ca un pas în minus (esenţial) să fie efectuat ulterior.
  • SAVE_CONFIG=[yes|no]: După configurarea kernel-ului, opţiunile selectate sunt stocate ca fişierul .config în structura de surse de kernel. Acest script poate fi suprascris în timpul următoarei compilări de kernel, sau chiar înlăturat din structura de surse de kernel. Alegând 'yes' aici este echivalent cu parametrul --save-config şi stochează toate opţiunile selectate în timpul configurării de kernel ca un script în directorul /etc/kernels/. Alegând valoarea 'no' păstrează starea de status quo.
  • USECOLOR=[yes|no]: Setarea acestei opţiuni cu valoarea 'yes' este echivalentă cu parametrul --color ce colorează textele afişate de genkernel, pentru a uşura procesul de depanare (în cazul în care este necesar.)
  • DEBUGLEVEL=[0|1|2|3|4|5]: Această opţiune este pentru a ajusta nivelul de informare a textelor produse de genkernel — setarea acestei opţiuni la '0' cu --debuglevel=0 va înlătura toate textele produse de genkernel; setarea acestei opţiuni cu valoarea '5' cu --debuglevel=5, oferă utilizatorului toate textele produse de genkernel.

Alegând opţiunile corespunzătoare în /etc/genkernel.conf, puteţi înjumătăţi numărul parametrilor transmişi aplicaţiei genkernel din linie de comandă:

Cod 3.2: Rularea genkernel (cu opţiuni), după configurarea genkernel.conf

# genkernel --gensplash --kerneldir=/calea/catre/surse/de/kernel/alternative \ 
--kernel-config=/calea/catre/fisierul-de-configurare/preferat --install all

Sunt obţinute rezultate identice din ambele abordări, dar ultima are cele mai multe opţiuni stocate într-un script ce poate fi modificat la o dată ulterioară.

4.  Procesul de Boot din Reţea cu genkernel

Procesul de Boot din Reţea de pe un mediu Installation CD

Utilitarul genkernel poate construi imagini de kernel şi initrd ce oferă suport pentru procesul de boot din reţea, sau procesul de netbooting. Cu un oarecare noroc, ar trebui să puteţi efectua boot din reţea de pe un sistem recent în mediul oferit de Installation CD.

Magia constă în script-ul linuxrc din genkernel: va încerca să utilizeze netmount pentru Installation CD utilizând NFS. De-acolo, script-urile de iniţializare de pe mediul Installation CD pot prelua procesul, ca şi când mediul CD ar fi fost prezent local.

Construirea Imaginilor de Kernel şi Initrd cu Suport pentru Procesul De Boot din Reţea

Pentru a activa suportul pentru procesul de boot din reţea, includeţi următoarele opţiuni în timpul configurării kernel-ului:

Atenţie: Suportul pentru procesul de boot din reţea este experimental şi poate conţine erori.

Mai întâi, imaginea de kernel trebuie să includă driver-e pentru Plăcile dvs. de Reţea (eng.: Network Interface Cards - NIC). În mod normal, driver-ele pentru astfel de dispozitive vor fi compilate ca module. Oricum, este esenţial (pentru procesul de boot în reţea) ca să compilaţi aceste drivere direct în imaginea de kernel şi nu ca module.

Cod 4.1: Configurarea unei serii de kernel 2.6.x pentru a suporta driver-ul plăcii dvs. de reţea

Device Drivers --->
   Networking Support --->
      Ethernet (10 or 100Mbit)  --->
         [*] Ethernet (10 or 100Mbit)
         <*>   driver-ul pentru placa dvs. de reţea
(Asiguraţi-vă că selectaţi <*> şi nu <M>)

Apoi, vă sugerăm să activaţi opţiunile IP: kernel level autoconfiguration şi IP: DHCP support. Aceasta evită un nivel de complexitate nenecesar, deoarece adresa de IP şi calea NFS către mediul Installation CD poate fi configurată pe un server DHCP. Bineînţeles, aceasta înseamnă că linia de comandă pentru kernel va rămâne constantă pentru orice maşină — ceea ce este foarte important pentru procesul de etherbooting.

Cod 4.2: Configurarea unei serii de kernel 2.6.x pentru a suporta DHCP

Device Drivers --->
   Networking Support --->
      Networking options
         [*] TCP/IP networking--->
         [*]   IP: kernel level autoconfiguration
         [*]     IP: DHCP support
(Aceste opţiuni îi specifică kernel-ului să trimită o cerere DHCP la boot.)

Adiţional, aţi putea să activaţi SquashFS, deoarece majoritatea mediilor moderne Gentoo Installation CD îl necesită. Suportul pentru SquashFS nu este inclus în structura de surse de kernel generică. Pentru a activa SquashFS, aplicaţi patch-urile necesare surselor de kernel generice sau instalaţi gentoo-sources.

Cod 4.3: Configurarea kernel-ului pentru a suporta SquashFS

File systems--->
   Miscellaneous filesystems --->
      [*] SquashFS 2.X - Squashed file system support

Odată ce procesul de compilare s-a terminat, creaţi o arhivă tarball (tar.gz) ce conţine modulele kernel-ului. Acest pas este necesar doar în cazul în care versiunea dvs. de kernel nu se potriveşte cu versiunea imaginii de kernel de pe mediul Installation CD.

Cod 4.4: Crearea unei arhive tarball ce conţine modulele de kernel

(Creaţi un fişier tar.gz conţinând toate modulele)
# cd /
# tar -cf /tmp/modules-X.Y.Z.tar.gz /lib/modules/X.Y.Z/

În funcţie de mecanismul de boot din reţea, veţi avea nevoie să efectuaţi unii din următorii paşi:

Cod 4.5: Crearea unei imagini de boot

(Creaţi o imagine etherboot)
# emerge mknbi
# cd /boot
# mkelf-linux -params="root=/dev/ram0 init=/linuxrc ip=dhcp" kernel... initrd... > etherboot.img

(Creaţi o imagine OpenBoot / SPARC64 TFTP)
# emerge sparc-utils
# cd /boot
# elftoaout kernel... -o kernel.aout
# piggyback64 kernel.aout System.map-... initrd-...
# mv kernel.aout openboot.img (Aceasta este imaginea de boot)

(PXE nu necesită nici un pas suplimentar, imaginile de
kernel şi initrd pot fi utilizate ca atare)

La final, copiaţi acest kernel pe server-ul dvs. TFTP. Detaliile sunt dependente de arhitectură şi nu reprezintă scopul acestui ghid. Vă rugăm să consultaţi documentaţia specifică platformei dvs.

Setarea NFS

Pentru a seta un director partajat NFS ce conţine mediul Installation CD, utilizaţi dispozitivul loop pentru a efectua mount pentru imaginea ISO şi apoi copiaţi conţinutul mediului CD în directorul partajat NFS. Ca o extra-opţiune utilă, script-urile din imaginea initrd a genkernel va extrage toate fişierele tar.gz stocate în directorul /nfs/livecd/add/. Tot ce trebui să faceţi acum este să copiaţi arhiva modules-X.Y.Z.tar.gz în directorul /nfs/livecd/add/.

Cod 4.6: Pregătirea directorului partajat NFS

(Aceasta presupune că /nfs/livecd este un director partajat NFS exportat)
# mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop
# cp -p /mnt/cdrom /nfs/livecd
# umount /mnt/cdrom

(Copiaţi modules.tar.gz în /add)
# mkdir /nfs/livecd/add
# cp /tmp/modules-X.Y.Z.tar.gz /nfs/livecd/add

Setarea DHCP

Imaginile netboot vor cere server-ului DHCP o adresă IP, ca şi un parametru root-path. Ambele pot fi specificate în funcţie de sistemul gazdă utilizând adresa MAC pentru a identifica maşinile:

Cod 4.7: Setare exemplu de fişier dhcpd.conf client

...

host netbootableMachine {
         hardware ethernet 11:22:33:44:55:66;
         fixed-address 192.168.1.10;
         option root-path "192.168.1.2:/nfs/livecd";
}
# Aici, 192.168.1.2 este server-ul NFS
# În timp ce 192.168.1.10 va fi adresa IP a maşinii ce efectuează boot din reţea
...

Instrucţiuni pentru Procesul de Boot din Reţea

Însuşi procesul de boot din reţea este, din nou, foarte dependent de platformă. Partea importantă este să specificaţi parametrii ip=dhcp şi init=/linuxrc liniei de comandă a kernel-ului, deoarece aceasta va activa interfaţa de reţea şi va specifica script-urilor initrd să mount-eze mediul Installation CD prin NFS. Iată câteva sfaturi dependente de platformă:

Cod 4.8: Instrucţiuni pentru Procesul de Boot din Reţea

# Etherboot - introduceţi discul etherboot în unitate şi reporniţi
# Linia de comandă pentru kernel a fost specificată în momentul construirii imaginii

# Sparc64 - Apăsaţi Stop-A la promptul de boot 
ok boot net ip=dhcp init=/linuxrc

# PXE - Setaţi pxelinux (parte din syslinux), apoi creaţi un
fişier pxelinux.cfg/default conţinând liniile:

DEFAULT gentoo
TIMEOUT 40
PROMPT 1

LABEL gentoo
    KERNEL kernel-X.Y.Z
    APPEND initrd=initrd-X.Y.Z root=/dev/ram0 init=/linuxrc ip=dhcp

5.  Concluzii

A Automatiza sau a nu Automatiza?

Scopul utilitarului genkernel este să ofere o alternativă (mai uşoară) celei consumatoare de timp a compilării kernel-ului. Ca întotdeauna, sunteţi liberi să decideţi dacă doriţi sau nu să automatizaţi procesul de compilare a kernel-ului.



Imprimare

Actualizat la 16 Decembrie 2005

Versiunea originală a acestei traduceri nu mai este întreţinută

Sumar: Acest ghid intenţionează să reprezinte o referinţă pentru toate funcţiile oferite de genkernel.

Tim Yamin
Autor

Jimi Ayodele
Contribuitor

Thomas Seiler
Suport NFS

Alin Dobre
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.