Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.

Gentoo-håndbogen til MIPS

Indhold:

  • Installation af Gentoo
    I denne del vil du lære at installere Gentoo på dit system.
    1. Om Gentoo Linux installation
      I denne del lærer du hvordan man installerer Gentoo på dit system.
    2. Valg af det rigtige installationsmedie
      Du kan installere Gentoo på mange måder. I dette kapitel vil vi forklare hvordan man kan bruge MIPS Netboot billedfiler.
    3. Opsætning af dit netværk
      For at installere Gentoo ved brug af Internet, vil du få brug for at sætte netværk op.
    4. Forberedelse af harddiske
      For at kunne installere Gentoo, skal du lave de nødvendige partitioner. Dette kapitel beskriver, hvordan man partitionerer en harddisk til fremtidig brug.
    5. Installation af Gentoo installationsfiler
      Gentoos installationsfiler virker igennem såkaldte stage-filer. I dette kapitel beskriver vi, hvordan du udpakker en stage-fil og sætter Portage op.
    6. Installation af Gentoo basissystem
      Uafhængigt af hvilken "stage" du vælger, vil det eventuelt resultere i, at du vil have et basalt Gentoo system til rådighed. Dette kapitel beskriver hvordan man når til det stadie.
    7. Opsætning af kernen
      Linux kernen er grundlaget for enhver distribution. Dette kapitel forklarer hvordan du sætter din kerne op.
    8. Opsætning af dit system
      Du kommer til at redigere nogle vigtige opsætningsfiler. I dette kapitel vil du modtage en oversigt over disse filer og en forklaring på hvordan man fortsætter.
    9. Installation af nødvendige systemværktøjer
      Som forklaret før, handler Gentoo om valg. I dette kapitel vil vi hjælpe dig med at vælge og at installere nogle vigtige værktøjer.
    10. Opsætning af boot-loader
      På både Silicon Graphics computere og på Cobalt servere er kravet at man bruger en boot-loader til hente kernen. Dette kapitel dækker opsætningen af arcboot (til SGI-computere) og colo til Cobalt-servere.
    11. Afslutning af din Gentoo installation
      Du er snart færdig. Vi vil lave én (eller flere) brugere til dit system.
    12. Hvad kan jeg gøre efter dette?
      Nu har du et Gentoo system, men hvad skal du nu gøre?
  • Arbejde med Gentoo
    Lær hvordan du skal arbejde med Gentoo: installation af software, ændringer af variabler, ændringer af Portages adfærd osv.
    1. En Introduktion til Portage
      Dette kapitel forklarer de "enkle" skridt en bruger i hvertfald skal kende til for at vedligeholde software på hans system.
    2. USE-flag
      USE-flag er et meget vigtigt aspekt af Gentoo. I dette kapitel lærer du at arbejde med USE-flag og forstå hvordan USE-flag arbejder sammen med dit system.
    3. Portages egenskaber
      Opdag de egenskaber Portage har, såsom understøttelse for distribueret kompilering, ccache og mere.
    4. Startscripts
      Gentoo bruger et specielt startscript-format, som, inklusive andre egenskaber, tillader afhængighedsdrevet beslutninger og virtuelle startscripter. Dette kapitel forklarer alle disse aspekter og forklarer hvordan man arbejder med disse scripter.
    5. Miljø-variabler
      Med Gentoo kan du med lethed håndtere miljø-variabler til dit system. Dette kapitel forklarer hvordan du kan gøre dette, og også en forklaring af de mest brugte variabler.
  • At arbejde med Portage
    "At arbejde med Portage" giver en dybdegående dækning af Portage, Gentoos software administrerings værktøj.
    1. Filer og biblioteker
      Når du vil kende Portage dybdegående, så får du brug for at vide hvor den gemmer sine filer og data.
    2. Opsætning gennem variabler
      Portage er fuldstændig konfigurerbar gennem forskellige variable som du kan definere i opsætningsfiler eller som miljøvariable.
    3. At blande software grene
      Gentoo tilbyder adskilte software grene, afhængige af stabilitet og understøttelse for arkitekturer. "At blande software grene" informerer dig om hvordan disse grene kan sættes op og hvordan du kan selv kan underkende disse adskillelser.
    4. Flere Portage værktøjer
      Portage kommer med nogle ekstra værktøjer der måske kan gøre din oplevelse af Gentoo endnu bedre. Læs videre for at opdage hvordan du kan bruge dispatch-conf og andre værktøjer.
    5. Afvigelse fra det officielle træ
      "Afvigelse fra det officielle træ" giver dig nogle tips og tricks til hvordan du kan bruge dit eget Portage træ, hvordan du bare synkroniserer de kategorier du ønsker, presse pakker ind (inject) og mere.
    6. Ebuild Applikationen
      I "Ebuild Applikationen" bliver du informeret om hvilke skridt Portage tager imens den installere software og hvordan du kan gøre dette selv vha. ebuild applikationen.

A. Installation af Gentoo

1. Om Gentoo Linux installation

1.a. Introduktion

Velkommen

Til at starte med, velkommen til Gentoo. Du går nu ind i en verden af valg og ydelse. Gentoo handler om valg. Når du installerer Gentoo vil du se dette flere gange -- du kan vælge hvor meget du selv vil kompilere, hvordan du vil installer Gentoo, hvilken systemlogger du vil have, osv.

Gentoo er en hurtig, moderne metadistibution med et rent og fleksibelt design. Gentoo er bygget op omkring frit software og skjuler ikke hvad der ligger under motorhjelmen for sine brugere. Portage, pakke-vedligeholdelsessystemet, er skrevet i Python, hvilket betyder at du nemt kan se og ændre i kildekoden. Gentoos pakkesystem benytter kildekoder (selvom der også er understøttelse af præ-kompilerede pakker) og konfigurering af Gentoo sker gennem normale tekstfiler. Med andre ord, åbent overalt.

Det er meget vigtigt, at du forstår at valg er hvad der får Gentoo til at køre. Vi vil ikke tvinge dig til noget du ikke kan lide. Hvis du føler vi gør det, så send en fejlrapport

Hvordan er installationen struktureret?

Gentoo installationen kan ses som en 10-trins procedure, svarende til kapitel 2 - 11. Hvert trin vil resultere i en ny tilstand.

  • Efter trin 1, er du i et brugbart miljø, klar til at installere Gentoo.
  • Efter trin 2 er din internetforbindelse klar til at installere Gentoo.
  • Efter trin 3 er dine harddisk(e) klar til at installere Gentoo på.
  • Efter trin 4 er dit installationsmiljø klargjort og du er klar til at chroot ind i det nye miljø.
  • Efter trin 5 er kerne-pakkerne, hvilket er de samme på alle Gentoo installationer, installeret.
  • Efter trin 6 er din Linux kerne kompileret.
  • Efter trin 7 har du skrevet de fleste af dit Gentoo systems opsætningsfiler.
  • Efter trin 8 er nødvendige systemværktøjer (som du kan vælge fra en pæn liste) installeret.
  • Efter trin 9 er din valgte bootloader installeret og opsat, og du er logget ind i din helt nye Gentoo installation.
  • Efter trin 10 er dit Gentoo Linux miljø klart til at blive udforsket.

Når du er stillet overfor et valg, vil vi gøre vores bedste for at forklare hvilke fordele og ulemper, der er. Vi vil så fortsætte med standardvalget, mærket med "Standard:" i titlen. De andre muligheder er mærket med "Alternativt:". Tro ikke at standard er hvad vi anbefaler. Det er derimod det vi tror at de fleste vil bruge.

Nogle gange kan du følge et valgfrit trin. Sådanne trin er mærket med "Valgfrit:" og behøves ikke for at få installeret Gentoo. Imidlertidig vil nogle valgfrie trin afhænge af tidligere beslutninger du har taget. Vi vil informere dig når dette sker, både når du laver valget og lige før det valgfrie trin er beskrevet.

Hvad er mine valgmuligheder?

Du kan installere Gentoo på mange forskellige metoder. Du kan hente og installere fra en af vores installationsCDer, fra en eksisterende distribution, fra en startbar CD (som f.eks. Knoppix), fra en netopstartet miljø, fra en redningsdiskette osv.

Dette dokument dækker installationen ved brug af Gentoo installationsCDer eller i enkelte tilfælde, et netopstartet miljø. Denne installation formoder at du vil have den sidste nye version af alle pakker. Hvis du vil udføre en netværksfri installation, bør du læse Gentoo 2005.1 Handbook (engelsk), som indeholder installationsinstruktioner til et netværksfrit miljø.

Noter også at hvis du planlægger at bruge GRP (Gentoo Reference Platform, en samling af præ-byggede pakker, som er ment til brug direkte efter en Gentoo-installation), skal du følge instruktionerne i Gentoo 2005.1 Handbooks (engelsk).

For at få hjælp til andre installationsmetoder, læs vores Alternative installationsinstruktioner. Vi har også et Gentoo installation tips og tricks(engelsk) dokument, som også kan være interessant at læse. Hvis du føler at de nuværende installationsinstruktioner er for meget, kan du bruge vores Hurtige installationsvejledning klar fra vores Dokumentationsressourcer, hvis velogmærke din arkitektur har sådanne et dokument.

Du har også mange muligheder: du kan kompilere hele dit system fra bunden af eller installere præ-byggede pakker, for at få dit Gentoo-miljø op at køre på ingen tid. Og selvfølgelig får du indledende løsninger, hvor du ikke behøver at kompilere det hele, men kan starte fra et semi-klart system.

Problemer?

Hvis du finder problemer i installationen (eller i installationsdokumentationen) så besøg vores fejlopfølgningssystem og se om fejlen er kendt. Hvis dette ikke er tilfældet så opret venligst en fejlrapport, så vi kan se på det. Vær ikke bange for de udviklere, der bliver tilknyttet (din) fejl -- de spiser normalt ikke folk.

Noter venligst at, selv dokumentet du nu læser er arkitektur-specifik, indeholder den også referencer til andre arkitekturer. Dette er sket, fordi at store dele af Gentoo-håndbogen bruger kildekoder, som er fælles for alle arkitekturer (for at undgå overlapninger af opgaver og udtømning af udviklingsressourcer). Vi vil prøve at holde det til et minimum for at undgå forvirring.

Hvis du er usikker på om et problem er en brugerfejl (en fejl du har lavet på trods af at du har læst dokumentationen) eller et softwareproblem (en fejl vi har lavet trods vi har testet installationen/dokumentationen) er du velkommen til at gå ind på #gentoo på irc.freenode.net. Du er selvfølgelig også velkommen selvom du ikke har problemer.

Hvis du har et spørgsmål om Gentoo, så tjek vores ofte stillede spørgsmål, som er tilgængelig via Gentoo dokumentationen. Du kan også se de OSS på vores forums. Hvis du ikke kan finde svar der så spørg på #gentoo, vores IRC-kanal på irc.freenode.net. Ja, mange af os er faktisk nørder, der sidder på IRC :-)

2. Valg af det rigtige installationsmedie

2.a. Hardwarekrav

Introduktion

Før vi starter, viser vi en liste over de hardwarekrav, som du skal opfylde for at installere Gentoo på din computer.

Hardwarekrav

Hukommelse 64 MB
Diskplads 1,5 GB (udover swapplads)
Swapplads Mindst 256 MB

Du bør også kigge på MIPS Hardwarekrav (engelsk) dokumentet, som er tilgængelig på vores hjemmeside.

2.b. Gentoo Linux Installationsmetoderne

Introduktion

Gentoo Linux kan blive installeret ved brug af tre stage-tarball filer. En stage-fil er en tarbal (komprimeret arkiv), som indeholder et minimalt miljø.

  • En stage1-fil indeholder ikke andet end en kompiler (kun C, ingen C++), Portage (Gentoos softwarehåndteringssystem) og et par pakker, som kompileren eller Portage afhænger af.
  • En stage2-fil indeholder en såkaldt bootstrappet system, et minimalt miljø, fra en kan starte med at bygge alle de andre nødvendige programmer, som færdiggører Gentoo-miljøet.
  • En stage3-fil indeholder en præ-bygget minimalt system, som er næsten helt klart. Den mangler kun nogle få programmer, som du, Gentoo-brugeren, behøver at vælge imellem og installere dem.

For at hjælpe dig med at vælge den stage-fil, som du ønsker at bruge, har vi nedskrevet de typiske fordele og ulemper for hver fil.

Stage1-metoden

En stage1 er brugt, når du vil bootstrappe og bygge hele systemet fra bunden af.

Ved at starte fra stage1, tillader du dig fuld kontrol over optimeringsindstillingerne og optimal bygge-tidsfunktionalitet, som fra starten af, er aktiveret på dit system. Dette gør stage1-installationen god til power-brugere, som ved hvad de gør. Det er også en udemærket installationsmetode for dem, som har lyst til at lære mere om den indre funktionalitet af Gentoo Linux.

Stage1 Fordele og ulemper
+ Tillader dig at have fuld kontrol over optimeringsindstillingerne og optimal bygge-tidsfunktionalitet, som er fra starten af, aktiveret på dit system
+ Brugbart for power-brugere, som ved hvad de gør
+ Tillader dig at lære mere om den indre funktionalitet af Gentoo
- Installationen er lang tid om at afslutte
- Hvis du ikke har tænkt dig at fin-indstille, er det sikkert spild af tid
- Kræver en fungerende Internet-forbindelse igennem installationen

Stage2-metoden

En Stage2 er brugt til at bygge hele systemet fra en "semi-samlet" bootstrappet status.

Stage2 installationer tillader dig at springe over bootstrap-processen; ved at gøre dette er fint, hvis du er tilfreds med de optimeringsindstillinger, som vi har valgt til din specifikke stage2-tarball.

Stage2 Fordele og ulemper
+ Du behøver ikke at bruge bootstrap
+ Hurtigere end at starte fra stage1
+ Du kan stadigvæk fin-indstille
- Du kan ikke indstille så meget som i stage1
- Det er stadigvæk ikke den hurtigste metode at installere Gentoo
- Du bliver nødt til at acceptere de optimeringer vi har lavet til bootstrap
- Kræver en fungerende Internet-forbindelse igennem installationen

Stage3-metoden

En stage3 installation indeholder et Gentoo Linux basissystem, som er bygget for dig. Du behøver kun at bygge få pakker, som vi ikke kan vælge for dig på forhånd.

At vælge stage3, giver dig den hurtigste installation af Gentoo Linux, men det betyder også at dit basissystem vil have de optimeringsindstillinger, som vi har valgt for dig (og lad os være ærlig, det er gode indstillinger, som vi med omhug har valgt til at forøge præstationerne, samt vedligeholde stabilitet). Stage3 kræves også, hvis du vil installere Gentoo ved brug af præbyggede pakker eller uden en netværksforbindelse.

Stage3 Fordele og ulemper
+ Hurtigste metode for at få et Gentoo basissystem
- Du kan ikke fin-indstille dit system - det er allerede bygget

Du vil måske være interesseret i at høre, at hvis du vælger forskellige optimeringsindstillinger efter at have installeret Gentoo, vil du have mulighed for at gensamle hele systemet med de ny optimeringsindstillinger.

Et notat omkring processor-arkitekturer

På mange arkitekturer, har processoren gået igennem adskillige generationer, hvor hver ny generation bygges på fundamentet af den tidligere. MIPS er ingen undtagelse. Der er adskillige generationer af CPUer dækket under MIPS-arkitekturen. For at vælge dit netboot-billedfil, stage-tarball og CFLAGS rigtigt, skal du være klar over hvilken familie, dit systems CPU tilhører. Disse familier er refereret som værende Instruktions Sæt Arkitektur.

MIPS ISA 32/64-bit CPU dækket
MIPS 1 32-bit R2000, R3000
MIPS 2 32-bit R6000
MIPS 3 64-bit R4000, R4400, R4600, R4700
MIPS 4 64-bit R5000, RM5000, RM7000 R8000, R10000, R12000, R14000, R16000
MIPS 5 64-bit Ingen endnu

Også, et andet vigtigt koncept, som du skal tænke over, er konceptet omkring endianness. Endianness referer til dne måde din CPU læser ord fra hovedhukommelsen. Et ord kan blive læst som enten en stor endian (mest signifikante bit først) eller lille endian (mindst signifikante bit først). Intel x86-maskiner er generelt Lille Endianer, imens Apple og Sparc-maskiner er Store Endianer. På MIPS, kan man vælge imellem dem. For at separere dem, tilføjer vi el til arkitektur-navnet for at erklære Lille Endian.

Arkitektur 32/64-bit Endianness Maskiner dækket
mips 32-bit Stor Endian Silicon Graphics
mipsel 32-bit Lille Endian DECStations, Cobalt Servers, PlayStation 2
mips64 64-bit Stor Endian Silicon Graphics
mips64el 64-bit Lille Endian Cobalt Servers, PlayStation 2

For dem der er interesseret i at lære mere omkring ISAer, kan man læse følgende hjemmesider.

2.c. Net-opstart oversigt

I denne sektion, dækker vi hvad du manger for at opstarte via net-opstart på en Silicon Graphics arbejdsstation eller Cobalt Servere. Dette er kun en overfladisk vejledning, den er ikke ment som at være gennemgående. For flere informationer, bør du læse Diskfri HOWTO.

Hvad du får brug for: Afhængigt af din maskine, er der nogle hardwarekrav, som du skal have opfyldt for at kunne net-opstarte og installere Linux.

  • Generelt:
    • DHCP/BOOTP server (ISC DHCPd anbefalet)
    • Tålmodighed -- og rigtigt meget af det
  • Til Silicon Graphics arbejdsstationer:
    • TFTP server (tftp-hpa anbefalet)
    • Hvis du ønsker/behøver at bruge en seriel konsol:
      • MiniDIN8 --> RS-232 serial cable
      • Null-modem cable
      • VT100 or ANSI compatable terminal capable of 9600 baud
  • Til Cobalt Servere (IKKE den originale Qube):
    • NFS-server
    • Null-modem kabel
    • VT100 eller ANSI-kompatibel terminal, som har mulighed for 115200 baud

Bemærk: SGI-maskiner bruger en MiniDIN 8-connector til de serielle porte. Åbenbart virker Apples modemkabler fint som serielle kabler, men da Apple-maskiner er udstyret med med USB & interne modemer, er disse blevet svære at finde. Et antal af sider beskriver hvordan man laver disse kabler (Google er din ven). Den følgende side beskriver hvordan man laver sådan et kabel. Den er på tysk, men har et rimeligt godt diagram. http://www.arbeitsplatzvernichtung-durch-outsourcing.de/marty44/sgihard.html

Bemærk: Til terminalen, kunne det være en rigtig VT100/ANSI terminal eller det kunne være en PC, som kører terminal-emulationssoftware (f.eks. HyperTerminal, Minicom, seyon, Telex, xc, screen -- eller hvad din yndlingsterminal hedder). Det betyder ikke noget, hvilken platform denne maskine kører -- så længe den har en RS-232 serielport, som du kan bruge og det tilhørende software.

Bemærk: Noter at denne vejlening dækker IKKE den originale Qube. Den originale Qube server mangler en seriel port på standardopsætningen, og det er derfor ikke muligt at installere Gentoo på den, uden brug af en skruetrækker og en stedfortrædende maskine for at udføre installationen. Den følgende side har en vejledning i at installere Gentoo på disse maskiner. http://www.metzner.org/projects/qube/

Opstart af TFTP og DHCP -- en kort vejledning

Okay, så du har fået de forskellige ting gjort op, og du er klar til at opsætte alt. Som tidligere nævnt -- dette er ikke en komplet vejledning, det er en bare-bone opsætning, som får ting til at køre. Du kan enten bruge dette når du starter en opsætning op fra begyndelsen af, eller bruge det til at tilføje mulighederne til din eksisterende opsætning, for at understøtte net-opstart.

Serverne behøves ikke nødvendigvis at køre Gentoo Linux, du kunne sagtens med grund bruge FreeBSD eller en anden Unix-lignende platform. Dog, denne vejledning forudsætter at du kører Gentoo Linux. Du kan også køre TFTP/NFS på en separat maskine til DHCP-serveren, hvis ønsket.

Første trin -- opsætning af DHCP. For at få ISC DHCP-daemonen til at svare til BOOTP-svar (som krævet af SGI & Cobalt BOOTROM), skal du først aktivere dynamic BOOTP på gruppen af adresser, som skal bruges; og derefter opsætte et punkt for hver klient med pointere til boot-billedfilen.

Kode oversigt 3.1: Installation af ISCs DHCP

# emerge dhcp

Når det er installeret, skal du oprette /etc/dhcp/dhcpd.conf. Her er en bare-bone opsætning, som hjælper dig med at starte.

Kode oversigt 3.2: Bare-bone dhcpd.conf

# Fortæl dhcpd at deaktivere dynamisk DNS.
# dhcpd vil nægte at starte uden dette.
ddns-update-style none;
  	 
# Oprettelse af et subnet:
subnet 192.168.10.0 netmask 255.255.255.0 {
# Address-mængden til vores boot-klienter.  Glem ikke 'dynamic-bootp' delen!
  pool {
   range dynamic-bootp 192.168.10.1 192.168.10.254;
  }
  	 
# DNS servere og standard gateway -- erstat så det passer til dig
  option domain-name-servers 203.1.72.96, 202.47.56.17;
  option routers 192.168.10.1;
  	 
# Fortæl DHCP-serveren at den har magten over dette subnet.
  authoritative;
 	 
# Tillad BOOTP at blive brugt til dette subnet.
  allow bootp;
}

Med sådan en opsætning, kan en tilføje et antal klienter indenfor subnet-klausulen. Vi vil dække hvad du mangler at putte ind senere i denne vejledning.

Næste trin -- opsætning af TFTP-server. For meningen af denne vejledning, vil jeg begrænse dette til tftp-hpa TFTP-daemonen. Jeg bruger dette selv på SGI-maskiner, Cobalt Servere og PXE-klienter uden problemer. Installation og opsætning er ligefrem:

Kode oversigt 3.3: Installation af tftp-hpa

# emerge net-ftp/tftp-hpa

Nu ville jeg personligt flytte min /tftpboot-folder til /home, hvor jeg har mere plads. Dette er helt valgfrit, og kan blive opsat igennem /etc/conf.d/in.tftpd-filen. For meningen af denne vejledning, forudsætter jeg at du har lagt den på standard-placeringen.

Nu da alt er opsat, er du klar til at starte på det sjove -- skrædersy vores opsætning til at tilpasse maskinen, som vi ønsker at net-opstarte.

2.d. Netopstart på SGI arbejdsstationer

Hentning af net-opstart billedfil

Afhængigt af dit system, som du installerer for, er der flere forskellige mulige billedfiler tilgængelig til dit system. Disse er navngivet efter systemtype og CPU, som de er bygget til. Disse maskiner er som følgende:

Kodenavn Maskiner
IP22 Indy, *Indigo 2, **Challenge S
IP26 *Indigo 2 Power
IP27 Origin 200, Origin 2000
IP28 *Indigo 2 Impact
IP30 Octane
IP32 O2

Bemærk: * Det er en typisk fejltagelse at tage fejl af IRIS Indigo (IP12 w/ R3000 CPU or IP20 w/ R4000 CPU, ingen af dem kan køre Linux), Indigo 2 (IP22, som kører Linux fint), den R8000-baserede Indigo 2 Power (som ikke kører Linux overhovedet) og den R10000-baserede Indigo 2 Impact (IP28, som er meget eksperimental). Tænk venligst på at disse maskiner er vidt forskellige.

Bemærk: ** På Challenge S, er UTP-netværksporten hængt af et WD33C95 SCSI kort, som på nuværende tidspunkt ikke er understøttet i Linux. Selvfølgelig er dette en begrænsning, så du bliver nødt til at bruge en AUI-->UTP transceiver tilsluttet til AUI-porten.

Også, i filnavnet, refererer r4k til R4000-series processorer, r5k til R5000, rm5k til RM5200 og r10k til R10000. Du vil finde billedfilerne på http://dev.gentoo.org/~kumba/mips/netboot.

DHCP-opsætning på en SGI-klient

Når du har hentet filen, placer den bare i din /tftpboot-folder. Så rediger din /etc/dhcp/dhcpd.conf og tilføj et punkt for din SGI-klient.

Bemærk: Du bliver måske nød til at oprette /tftpboot-folder, hvis den ikke allerede er der.

Kode oversigt 4.1: dhcpd.conf udklip til SGI arbejdsstation

subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
# ... de typiske ting her ...

# SGI arbejdsstation... ændre 'sgi' til din SGI-maskines værtsnavn.
host sgi {
  	 
    # MAC-adresse på SGI-maskinen.  Normalt er den skrevet på bagsiden eller
    # ovenpå maskinen.
    hardware ethernet 08:00:69:08:db:77;
  	 
    # TFTP-server til at hente fra (som standard, det samme som DHCP-serveren)
    next-server 192.168.10.1;
  	 
    # IP-adresse som gives til SGI-maskine
    fixed-address 192.168.10.3;
  	 
    # Filnavn til PROMen til at hente og starte
    filename "/gentoo-r4k.img";
   }
}

Kerne-valgmuligheder

Vi er snart færdig, men der er nogle få små-ændringer, som stadigvæk skal gøres. Start en konsol med root-rettigheder og indtast følgende kommandoer.

Kode oversigt 4.2: Nogle reparationer til SGI-maskiner for at TFTP kan virke ordentligt

(Deaktiver "Path Maximum Transfer Unit", ellers vil SGI Prom ikke kernen)
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc

(Indstil port-omfanget, som kan bruges af SGI Prom)
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range

Det bør være nok for at tillade Linux-serveren at lege med SGis PROM

Start din daemons...

Ved dette sted, bør du allerede være klar til at starte daemons. Indtast følgende:

Kode oversigt 4.3: Start af DHCP- og TFTP-daemons

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

Hvis intet gik galt i det sidste trin, skulle du være klar til at tænde for arbejdsstationen og fortsætte med denne vejledning. Hvis DHCP-serveren ikke starter op, pga. et eller andet, prøv at kør 'dhcpd' i kommandolinien og se hvad den fortæller dig -- hvis alt er ok, bør den bare skubbe sig i baggrunden, ellers vil du se 'exiting.' lige under dens klagen.

En nem metode at verificere om tftp-daemonen kører, er ved at taste følgende kommando -- hvis du ser noget lignende det output nedenfor er alt i orden.

Kode oversigt 4.4: Tjek om TFTPd kører

# netstat -al | grep ^udp
udp        0      0 *:bootpc                *:*
udp        0      0 *:631                   *:*
udp        0      0 *:xdmcp                 *:*
udp        0      0 *:tftp                  *:* <-- (look for this line)

Netboot af SGI-maskinen

Okay, alt er klar nu, DHCP kører, ligeså gør TFTP. Nu er tid til at fyre op for SGI-maskinen. Tænd enheden -- når du ser "Running power-on diagnostics" på skærmen, klik enten "Stop For Maintenance" eller tryk ESCAPE. Du vil nu blive præsenteret med en menu som følgende. Indtast kommandoerne vist nedenfor.

Kode oversigt 4.5: SGI PROM Maintenance Menu

        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

Fra dette punkt, bør maskinen starte med at hente billedfilen, og så, efter ca. 20 sekunder, starte Linux. Hvis alt er vel, bør du være smidt af ved Busybox ash-skallen (shell) som vist forneden, hvor du kan gå videre til Opsæting af dit netværk.

Kode oversigt 4.6: When things are going right...

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.

Fejlfinding

Hvis maskinen er stædig og nægter at hente dens billedfil, kan det være en af to ting, (1) du har lavet en bommert et eller andet sted eller (2) den mangler en kærlig hentydning (nej, læg den forhammer ned!). Her er en liste over småting du kan kigge på:

  • dhcpd giver SGI-maskinen en IP-adresse. Du bør se nogle beskeder omkring en BOOTP-request i systemlog. tcpdump er også brugbar her.
  • Rettighederne er indstillet korrekt i din tftp-bibliotek (typisk /tftpboot -- den skal være globalt læsbar)
  • Tjek system-logfilerne for at se hvad tftp-serveren rapporterer (måske fejl)

Hvis du har kigget alt på serveren, og du får timeouts osv. på SGI-maskinen, prøv at indtaste følgende i konsollen.

Kode oversigt 4.7: Klyt med SGI PROM for at virke

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

2.e. Net-opstart på Cobalt-servere

Oversigt over net-opstartsproceduren

I modsætning til SGI-maskiner, bruger Cobalt-server NFS til at overføre deres kerne til opstart. Du starter maskinen ved at holde højre & venstre pil-taster nede, imens du tænder for enheden. Maskinen vil så prøve at opnå en IP-adresse via BOOTP, mounte /nfsroot-folderen fra serveren via NFS og så prøve at hente og starte filen vmlinux_raq-2800.gz, som den forudsætter at være en standard ELF-binær.

Desværre tillader Cobalt BOOTROM os ikke have noget at sige i denne procedure, så filen SKAL være placeret i /nfsroot-folder, og den skal være mindre end 675 KB i størrelse. I denne vejledning, vil vi opsætte CoLo for at tillade os at starte større kerner, over dens begrænsning. CoLo understøtter også embedded ramdiske, og derfor befrier den til behovet for et fuldt rod-filsystem, placeret i /nfsroot.

Hente en Netboot-billedfil

Inden i http://dev.gentoo.org/~kumba/mips/cobalt/netboot/ vil du finde de nødvendige opstartsbilledfiler, til at opsætte en Cobalt og få den til at køre. Filerne, som du behøver, vil være navngivet cobalt-netboot-YYYYMMDD.img.gz -- vælg den nyeste og placer den i din /nfsroot-folder. For at gøre det nemt, omdøb filen til gentoo-cobalt.img.gz -- Jeg vil forudsætte at du har gjort dette.

Når dette er gjort, gå videre med http://www.colonel-panic.org/cobalt-mips/ og hent den nyeste udgivelse af CoLo-boot-loaderen. Untar denne et sted nemt. Inden i colo-1.XX/binaries-folderen, som er oprettet, bør du finde den under en fil, kaldet colo-chain.elf. Gzip denne fil og placer den i /nfsroot, ved at kalde den vmlinux_raq-2800.gz. Også i nogle tilfælde, vil du have brug for at lave et symbolsk link kaldet boot, som peger tilbage til /nfsroot. Du kan gøre dette ved at bruge disse kommandoer:

Bemærk: Noter venligst at RaQ1 og Qube 2700 kigger efter vmlinux.gz i stedet for vmlinux_raq-2800.gz.

Kode oversigt 5.1: Indsætte CoLo i nfsroot

# tar -xzvf colo-1.XX.tar.gz
# cd colo-1.XX/binaries
(Til Qube 2800, RaQ2 osv.)
# gzip -9vc colo-chain.elf > /nfsroot/vmlinux_raq-2800.gz
(Til RaQ1, Qube 2700)
# gzip -9vc colo-chain.elf > /nfsroot/vmlinux.gz
# cd /nfsroot
# ln .boot

Bemærk: Hvis den seneste CoLo-udgivelse ikke vil starte, kan du prøve en tidligere version. Version 1.16 og tidligere er kendt for at virke.

Opsætning af NFS-server

Siden maskinen bruger NFS til at hente dens billedfil, vil du få brug for at eksportere /nfsroot på din server. Hvis du ikke allerede har gjort sdådan, vil du få brug for at installere net-fs/nfs-utils-pakken.

Kode oversigt 5.2: Installation af nfs-utils

# emerge net-fs/nfs-utils

Når dette er gjort, placer det følgende i din /etc/exports-fil. Du kan sætte hårdere restriktioner, hvis du ønsker.

Kode oversigt 5.3: Export af /nfsroot-folderen

/nfsroot      *(ro,sync)

Nu, da dette er gjort, kan du starte NFS-serveren:

Kode oversigt 5.4: Start af NFS-serveren

# /etc/init.d/nfs start

Hvis NFS-serveren allerede kørte på tidspunktet, kan du fortælle den at kigge en gang til på dens exports-fil, ved at bruge exportfs.

Kode oversigt 5.5: Export af nyt filsystem

# exportfs -av

DHCP-opsætning for en Cobalt-maskine

Nu er DHCP-siden af tingene relativt ligefrem. Tilføj følgende til din /etc/dhcp/dhcpd.conf-fil.

Kode oversigt 5.6: dhcpd.conf udkast til Cobalt server

subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
  # ... det typiske her ...
 	 
  # Opsætning af en Cobalt-server
  # Indstil værtsnavnet her:
  host qube {
   # Sti til nfsroot-folderen.
   # Dette er mest kun til når man bruger TFTP-opstartsvalgmuligheden til CoLo
   option root-path "/nfsroot";
  	 
   # Cobalt-servers ethernet MAC-adresse
   hardware ethernet 00:10:e0:00:86:3d;
  	 
   # Server til at hente billedfil fra
   next-server 192.168.10.1;
 	 
   # IP-adresse for cobalt-serveren
   fixed-address 192.168.10.2;
  	 
   # Billefil til at hente
   # Igen, dette har mere at gøre med CoLo
   filename "gentoo-cobalt.img.gz";
   }
}

Start dine daemoner...

På dette tidspunkt bør du være klar til at starte daemonerne. Indtast følgende:

Kode oversigt 5.7: Start af DHCP- og NFS-daemoner

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

Hvis ingenting gik galt i sidste trin, bør du være klar til at opstarte din arbejdsstation og fortsætte med denne vejledning. Hvis DHCP-serveren ikke er fyret op for en eller anden grund, prøv at køre 'dhcpd' på kommandolinien og se hvad den fortæller dig -- hvis alt er i orden, bør den forsvinde ind i baggrunden, ellers vil du se 'exiting.' nedenunder dens klagen.

Netopstart af Cobalt-maskinen

Okay, alt er klart, DHCP kører, og det gør NFS også. Nu er der tid til at fyre op for Cobalt-maskinen. Forbind dit null-modem-kabel, og opsæt den serielle terminal til at bruge 115200 baud, 8 bits, ingen paritet, 1 stop bit, VT100 emulation. Når dette er gjort, hold højre & venstre piltaster nede, imens du tænder for enheden.

Hvis alt er i orden, vil bag-panelet viser "Net Booting" og du bør kunne se noget netværksaktivitet, forfulgt tæt af at CoLo går i gang. På bag-panelet scroll ned i menuen, til du ser "Boot Shell" og tast ENTER. På den serielle konsol, bør du være kommet til en prompt, som vist nedenfor.

Bemærk: Det er blevet rapporteret at ved at vælge NFS-opstartsvalgmuligheden ville gøre alt dette for dig, under moderne versioner af CoLo. Hvis det ikke virke at vælge denne mulighed, så læs videre.

Kode oversigt 5.8: CoLo starter til en prompt

[ "CoLo" v1.13 ]
stage2: 87fb0000-88000000
pci: unit type <Qube2>
tulip: {00:10:e0:00:86:3d}
ide: resetting
boot: running boot menu
>

Første trin, fortæl maskinen at hente en adresse via DHCP. Tast dhcp ved prompten.

Kode oversigt 5.9: Fangst af en adresse via DHCP

> dhcp
net: interface up
dhcp: DISCOVER
dhcp: OFFER 10.0.0.1 <-- 192.168.10.254
dhcp: REQUEST
arp: sent request for 192.168.10.254
udp: no matching socket 192.168.5.1:67 --> 10.0.0.1:68
arp: resolved 192.168.10.254
udp: no matching socket 192.168.5.1:67 --> 10.0.0.1:68
dhcp: DISCOVER
dhcp: OFFER 10.0.0.1 <-- 192.168.10.254
dhcp: REQUEST
udp: no matching socket 192.168.5.1:67 --> 10.0.0.1:68
dhcp: ACK
net: interface down
net: interface up
  address     10.0.0.1
  netmask     255.255.255.0
  gateway     10.0.0.254
  name server 192.168.5.1

NOTAT: Hvis du har et Windows-netværk, vil du se beskeder som f.eks. udp: no matching socket. Det er i respons til netværksafsendelser på porte, som CoLo ikke kan forstå. Selvom de er meget irriterende, er de helt harmløse.

Kode oversigt 5.10: 'no matching socket' fejlbeskeder

udp: no matching socket 10.0.0.254:138 --> 10.0.0.255:138
udp: no matching socket 10.0.0.254:138 --> 10.0.0.255:138
udp: no matching socket 10.0.0.253:1062 --> 10.0.0.255:137
udp: no matching socket 10.0.0.253:1062 --> 10.0.0.255:137

Okay, næste trin er at fortælle Cobalt-serveren at hente dens kerne.

Kode oversigt 5.11: Hentning af kernen

> nfs 10.0.0.254 /nfsroot gentoo.img.gz
arp: sent request for 10.0.0.254
arp: resolved 10.0.0.254
udp: no matching socket 10.0.0.253:1062 --> 10.0.0.255:137
nfs: mounted "/nfsroot"
nfs: lookup "gentoo.img.gz"
nfs: mode <0100644>
4651KB loaded (1240KB/sec)
0048ada0 4763040t

Og det var det... den har nu hentet sin kerne, og vi kan fortælle den at gå i gang med opstarten.

Kode oversigt 5.12: Opstart af kernen

> execute
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)

Hvis alt er i orden, bør du blive afsat ved Busyboxens ash-shell, som vist nedenfor, hvor du kan gå videre med Opsætning af dit netværk.

Kode oversigt 5.13: Når ting gør den rigtige vej...

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.

Fejlfinding

Hvis maskinen er stædig og nægter at hente dens billedfil, kan det være en af to ting, (1) du har lavet en bommert et eller andet sted eller (2) den mangler en kærlig hentydning (nej, læg den forhammer ned!). Her er en liste over småting du kan kigge på:

  • dhcpd giver Cobalt-maskinen en IP-adresse. Du bør se nogle beskeder omkring en BOOTP-request i systemlog. tcpdump er også brugbar her.
  • Rettighederne er indstillet korrekt i din /nfsroot-folder (den skal være globalt læsbar)
  • Vær sikker på at NFS-serveren kører og eksportere /nfsroot-folderen. Tjek dette ved at bruge exportfs -v på serveren.

3. Opsætning af dit netværk

3.a. Automatisk netværksfinding

Måske virker det bare?

Hvis dit system er sat på et Ethernet-netværk via en DHCP-server, er det højt sandsynligt at din netværksopsætning allerede er opsat automatisk for dig. Hvis dette er tilfældet, bør du have mulighed for at tage brug af de mange inkluderede netværksrelaterede kommandoer på installationsCDen, som f.eks. ssh, scp, ping, irssi, wget og links samt andre.

Hvis netværket er opsat for dig, vil /sbin/ifconfig-kommandoen vise en liste over netværksgrænseflader, som udover lo, f.eks. er eth0:

Kode oversigt 1.1: /sbin/ifconfig ved en fungerende netværksopsætning

# /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

Valgfri: Opsætning af proxyer

Hvis du har adgang til Internet igennem en proxy, bliver du måske nødt til at opsætte oplysninger om proxy under installationen. Det er meget let at definere en proxy; du behøver kun at definere en variabel, der indeholder informationen om proxy-serveren.

I de fleste tilfælde kan du nøjes med at definere variablerne med serverens værtsnavn. Nedenfor er vist nogle eksempler hvor det antages at proxy'en er proxy.gentoo.org og porten er 8080.

Kode oversigt 1.2: Angivelse af proxy-servere

(Hvis proxy'en skal bruges til HTTP-trafik)
# export http_proxy="http://proxy.gentoo.org:8080"
(Hvis proxy'en skal bruges til FTP-trafik)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Hvis proxy'en skal bruges til RSYNC-trafik)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Hvis din proxy kræver et brugernavn og kodeord, skal du bruge den følgende syntaks for variablen.

Kode oversigt 1.3: Tilføjelse af brugernavn og kodeord til en proxy-variabel

http://username:password@proxy.gentoo.org:8080

Test netværket

Du kan prøve at pinge din internetudbyders DNS-server (der findes i /etc/resolv.conf) og en hjemmeside som du kender, hvis du vil være sikker på dine pakker når nettet, DNS navneopslag fungerer etc..

Kode oversigt 1.4: Yderligere test af netværket

# ping -c 3 www.yahoo.com

Hvis du kan bruge netværket, så spring resten af denne sektion over og fortsæt med Forberedelse af harddiske. Hvis ikke, læs videre.

3.b. Automatisk netværksopsætning

Hvis ikke netværket virker med det samme, har du på nogle installationsmedier mulighed for at bruge net-setup (til normale eller trådløse netværk) eller adsl-setup (til ADSL-brugere) eller pptp (til PPTP-brugere, kun på x86).

Hvis dit installationsmedie ikke indeholder nogen af disse værktøjer eller dit netværk fungerer ikke endnu, så fortsæt med Manuel netværksopsætning.

Standard: Brug af net-setup

Den simpleste måde at opsætte sit netværk på, hvis det ikke blev opsat automatisk, er at køre scriptet net-setup:

Kode oversigt 2.1: At køre af scriptet net-setup

# net-setup eth0

net-setup vil stille dig nogle spørgsmål om dit netværksmiljø. Når det er overstået burde du have en fungerende netværksforbindelse. Test din netværksforbindelse som angivet før. Hvis testen er positiv, så tillykke! Du er nu klar til at installere Gentoo. Spring resten af denne sektion over og fortsæt med Forberedelse af harddiske.

Hvis dit netværk stadig ikke virker, så fortsæt med Manuel netværksopsætning.

Alternativ: Brug af RP-PPPoE

Hvis du har brug for PPPoE for at få forbindelse til Internettet, så har installationsCDen (hvilken som helst version) gjort det nemt for dig ved at inkludere rp-pppoe. Brug scriptet adsl-setup til at opsætte din forbindelse. Du vil blive spurgt om hvilken Ethernet enhed der er forbundet til dit ADSL-modem, brugernavn og adgangskode, IP-adressen til din DNS-server og om du vil have en standard firewall eller ej.

Kode oversigt 2.2: Brug af rp-pppoe

# adsl-setup
# adsl-start

Hvis noget går galt, så dobbelttjek at du har tastet brugernavn og kodeord korrekt ind ved at kigge i /etc/ppp/pap-secrets eller /etc/ppp/chap-secrets og vær sikker på du bruger den rigtige Ethernet enhed. Hvis din Ethernet enhed ikke eksisterer, bliver du nødt til at indlæse de rigtige netværksmoduler. I så fald bør du fortsætte med Manuel netværksopsætning hvor vi forklarer hvordan de rigtige netværksmoduler indlæses.

Hvis alt virkede, kan du fortsætte med Forberedelse af harddiske.

Alternativ: Brug af PPTP

Bemærk: PPTP-understøttelse er kun tilgængelig til x86

Hvis du har brug for PPTP, kan du benytte pptpclient, som er på vores installationsCDer. Men først er du nødt til at sikre dig at din opsætning er korrekt. Rediger i /etc/ppp/pap-secrets eller /etc/ppp/chap-secrets så den indeholder den rigtige kombination af brugernavn og kodeord:

Kode oversigt 2.3: Redigering af /etc/ppp/chap-secrets

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

Tilpas /etc/ppp/options.pptp hvis det er nødvendigt:

Kode oversigt 2.4: Redigering af /etc/ppp/options.pptp

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

Når det er gjort, skal du bare køre pptp (sammen med de indstillinger du ikke kunne angive i options.pptp) for at forbinde til serveren:

Kode oversigt 2.5: Forbindelse til en opkaldsserver

# pptp <server ip>

Fortsæt nu med Forberedelse af harddiske.

3.c. Manuel netværksopsætning

Indlæsning af de rigtige netværksmoduler

Når installationsCDen starter op, prøver den på at finde alle dine hardwareenheder og indlæse de rigtige kerne moduler (drivere) for at understøtte din hardware. I langt hovedparten af tilfældene gør den sit job meget godt. I nogle tilfælde vil den dog ikke automatisk indlæse de kerne moduler du har brug for.

Hvis net-setup eller adsl-setup fejlede, så er det muligt at dit netkort ikke blev fundet med det samme. Det betyder at du selv bliver nødt til at indlæse de rigtige kerne moduler.

For at se hvilke kerne moduler vi tilbyder til netværk, så brug ls:

Kode oversigt 3.1: Søgning efter tilgængelige moduler

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

Hvis du finder en driver til dit netkort, så brug modprobe til at indlæse kerne modulet:

Kode oversigt 4.22: Brug af modprobe til at indlæse et kerne modul

(Som et eksempel indlæser vi pcnet32 modulet)
# modprobe pcnet32

Brug ifconfig til at undersøge om dit netkort er fundet nu. Et fundet netkort vil resultere i noget lignende dette:

Kode oversigt 3.3: Test af tilgængelighed af netkort, positiv

# 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)

Hvis du til gengæld modtager følgende fejl, er netkortet ikke fundet:

Kode oversigt 3.4: Test af tilgængelighed af netkort, negativ

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

Hvis du har flere netværkskort i dit system, så er de navngivet eth0, eth1, osv. Vær sikker på at det netkort du vil bruge virker fint og husk at bruge den korrekte navngivning igennem dette dokument. Vi antager at det er netværkskortet eth0 der bliver brugt.

Hvis du nu har et fundet netkort, kan du prøve net-setup eller adsl-setup igen (hvilket burde virke), men for de hardcore folk blandt jer, vil vi forklare hvordan netværket opsættes manuelt.

Vælg en af de følgende sektioner, baseret på din netværksopsætning:

Brug af DHCP

DHCP (Dynamic Host Configuration Protocol) gør det muligt at modtage netværksinformationer automatisk (IP-adresse, netmaske, broadcast-adresse, gateway, navneservere etc.). Det virker kun hvis du har en DHCP-server på dit netværk (eller hvis din udbyder tilbyder en DHCP-tjeneste). For at få en netværksenhed til at modtage denne information automatisk skal du bruge dhcpcd:

Kode oversigt 3.5: Brug af dhcpcd

# dhcpcd eth0
Nogle netværksadmistratorer kræver at du bruger
værtsnavnet og domænenavnet leveret af DHCP-serveren.
I det tilfælde, brug
# dhcpcd -HD eth0

Hvis dette virker (prøv at pinge en internetserver som Google), er alt indstillet og du er klar til at fortsætte. Spring resten af denne sektion over og fortsæt med Forberedelse af harddiske.

Forberedelse til trådløs adgang

Bemærk: Understøttelse for iwconfig kommandoen er kun muligt på x86-, amd64- og ppc-installationsCDer. Du kan du stadig få udvidelserne til at virke ved at følge instruktionerne ved linux-wlan-ng projektet(engelsk).

Hvis du bruger et trådløs (802.11) kort, skal du måske opsætte dine trådløse indstillinger før du fortsætter. For at se nuværende trådløse indstillinger for dit kort, kan du bruge iwconfig. Kørsel af iwconfig vil måske vise noget lignende dette:

Kode oversigt 3.6: Visning af nuværende trådløse indstillinger

# 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

Bemærk: Nogle trådløse kort vil have enhedsnavnet wlan0 eller ra0 i stedet for eth0. Køre iwconfig uden nogen kommando-line parametre for at finde det korrekte enhedsnavn.

For de fleste brugere, er der kun to indstillinger, som kan være vigtige at ændre, ESSID (trådløs netværksnavn) eller WEP-nøglen. Hvis ESSID og Access Point-adressen vist, allerede er sat til dit access point, og du bruger ikke WEP, så vil dit trådløse netværk virke. Hvis du mangler at ændre din ESSID, eller tilføje en WEP-nøgle, kan du udføre følgende kommandoer:

Kode oversigt 3.7: Ændring af ESSID og/eller tilføje WEP-nøgle

(Dette indstiller netværksnavnet til "GentooNode")
# iwconfig eth0 essid GentooNode

(Dette indstiller en hex WEP-nøgle)
# iwconfig eth0 key 1234123412341234abcd

(Dette indstiller en ASCII-nøgle - foranstil det med "s:")
# iwconfig eth0 key s:some-password

Du kan bekræfte dine trådløse indstillinger igen ved brug af iwconfig. Når du har et trådløs netværk fungerende, kan du fortsætte med IP-niveau netværksopsætning, som beskrevet i næste sektion (Forståelse af netværksterminologi) eller bruge net-setup værktøjet, som bekrevet førhen.

Forståelse af netværksterminologi

Bemærk: Hvis du kender din IP-adresse, broadcast-adresse, netmaske og dine navnservere kan du springe denne undersektion over og fortsætte med Brug af ifconfig og route.

Hvis alt er slået fejl indtil videre, bliver du nødt til at opsætte netværket manuelt. Det er langt fra svært. Men du skal være lidt inde i netværksterminologi, for at kunne opsætte dit netværk tilfredsstillende. Når du er færdig med at læse dette vil du vide hvad en gateway er, hvad en netmaske bruges til, hvordan enbroadcast-adresse er dannet og hvorfor du har brug for navneservere.

I et netværk er værter identificeret af deres IP-adresse (internetprotokol-adresse). En sådan adresse er en kombination af fire tal mellem 0 og 255. Det er i hvert fald sådan vi opfatter det. I virkeligheden består en IP-adresse af 32 bit (ettaller og nuller). Lad os se på et eksempel:

Kode oversigt 3.8: Eksempel på en IP-adresse

IP-adresse (tal):       192.168.0.2
IP-adresse (bit):       11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

En IP-adresse er unik for en vært, hvad angår alle tilgængelige netværk, hvilket vil sige at alle værter, du kan nå, skal have unikke IP-adresser. For at kunne skelne mellem en vært inden for et netværk og en vært uden for et netværk er IP-adressen delt op i to: netværksdelen og værtsdelen.

Adskillelsen er skrevet ned med netmasken, en samling af ettaller efterfulgt af nuller. Den del af IP'en der kan lægges på ettallerne er netværksdelen, den anden er værtsdelen. Netmasken kan skrives ned som en IP-adresse.

Kode oversigt 3.9: Eksempel på adskillelse af netværk og vært

IP-adresse:    192      168      0         2
            11000000 10101000 00000000 00000010
Netmaske:   11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                     Netværk             Vært

Med andre ord er 192.168.0.14 stadig en del af vores netværk i eksemplet, mens 192.168.1.2 ikke er.

Broadcast-adressen er en IP-adresse med den samme netværksdel som dit netværk, men kun med ettaller som værtsdel. Alle værter på netværket lytter til denne IP-adresse. Dette er virkeligt tiltænkt broadcasting af pakker.

Kode oversigt 3.10: Broadcast-adresse

IP-adresse:    192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Netværk             Vært

For at kunne surfe på Internettet, bliver du nødt til at vide hvilken vært, der deler internetforbindelsen. Denne vært kaldes en gateway. Da dette er en regulær vært, har den en almindelig IP-adresse (fx 192.168.0.1).

Vi har tidligere nævnt at alle værter har sin egen IP-adresse. For at kunne nå denne vært med et navn (i stedet for en IP-adresse) har du brug for en tjeneste der oversætter et navn (fx dev.gentoo.org) til en IP-adresse (fx 64.5.62.82). En sådan tjeneste kaldes en navnetjeneste. For at kunne benytte sådan en tjeneste er du nødt til at definere de nødvendige navneservere i /etc/resolv.conf.

Nogle gange fungerer din gateway også som din navneserver. Ellers er du nødt til at indtaste navneserveren der bliver tilbudt af din internetudbyder.

For at opsummere, så vil du have brug for følgende information inden du fortsætter:

Netværksdel Eksempel
Din IP-adresse 192.168.0.2
Netmaske 255.255.255.0
Broadcast-adresse 192.168.0.255
Gateway 192.168.0.1
Navneserver(e) 195.130.130.5, 195.130.130.133

Brug af ifconfig og route

Opsætningen af dit netværk består af tre dele. Først tildeler vi os selv en IP-adresse ved at benytte ifconfig. Så indstiller vi routing til gateway ved hjælp af route. Til sidst slutter vi af med at placere IP-adresserne på navneserverne i /etc/resolv.conf.

For at tildele en IP-adresse har du brug for din IP-adresse, broadcast-adresse og netmasken. Udfør så følgende kommando, hvor du udskifter ${IP_ADDR} med din IP-adresse, ${BROADCAST} med din broadcast-adresse og ${NETMASK} med din netmaske:

Kode oversigt 3.11: Brug af ifconfig

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

Konfigurer nu routing med route. Skift ${GATEWAY} ud med din gateways IP-adresse:

Kode oversigt 3.12: Brug af route

# route add default gw ${GATEWAY}

Åbn nu /etc/resolv.conf med din foretrukne editor (i vores eksempel bruger vi nano):

Kode oversigt 3.13: Oprettelse af /etc/resolv.conf

# nano -w /etc/resolv.conf

Sæt nu din(e) navneserver(e) ind i følgende skabelon. Sørg for at udskifte ${NAMESERVER1} og ${NAMESERVER2} med de rigtige navneserver-adresser:

Kode oversigt 3.14: /etc/resolv.conf skabelon

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Det var det. Test nu dit netværk ved at pinge en internetserver (f.eks. Google). Hvis det virker, så tillykke. Du er nu klar til at installere Gentoo. Fortsæt med Forberedelse af harddiske.

4. Forberedelse af harddiske

4.a. Introduktion til blok-enheder

Blok-enheder

Vi vil tage et godt kig på disk-orienterede aspekter af Gentoo Linux og Linux generelt, inklusiv Linux filesystemer, partitioner og blok-enheder. Så, når du er blevet godt kendt med diske og filsystemer, vil du blive vejledt igennem processen af at opsætte partioner og filsystemer til din Gentoo Linux installation.

For at begynde, vil vi introducere begrebet blok-enheder. Den mest kendte blok-enhed er sikkert den, som repræsenterer den første SCSI-harddisk på et Linux system, med navnet /dev/sda.

Blok-enhederne ovenover repræsenterer en abstrakt grænseflade til harddisken. Brugerprogrammer kan bruge disse blok-enheder, til at interagere med din harddisk, uden at skulle bekymre sig om at dine drev er IDE, SCSI eller noget andet. Programmet kan simpelthen adressere lageret på harddisken, som et bundt af tilstødende, vilkårlige-tilgængelige 512-byte blokke.

Partitioner

Selvom det er teoretisk muligt at bruge hele harddisken til dit Linux system, er det næsten aldrig gjort i praksis. I stedet for er hele hardiskens blok-enheder opsplittet i mindre, mere håndgribelige blok-enheder. På de fleste systemer er disse kaldet partitioner.

4.b. Design af et partitionsskema

Hvor mange og hvor stort?

Antallet af partitioner er meget afhængigt af dit miljø. F.eks., hvis du har en hel del brugere, vil det være nærmest at lave dit /home separat, idet at det forøger sikkerheden og gør det nemmere at lave backup. Hvis du installerer Gentoo for at arbejde som en mail-server, burde din /var være separat, idet alle emails er gemt inde i /var. Et godt valg af filsystem vil derefter maksimere din ydelse. Spil-servere bør have en separat /opt, idet at de fleste spil-servere bliver installeret der. Forklaringen er den samme som for /home: sikkerhed og backup. Du vil med sikkerhed ønske at holde /usr stor: ikke alene indeholder den de fleste programmer, Portage-træet optager alene 500 MB, undtagen de forskellige kildekoder, som er gemt inden i.

Som du kan se, afhænger det meget af hvad du vil opnå. Separate partitioner eller volumes har følgende fordele:

  • Du kan vælge det bedste ydelsesstærke filsystem til hver partition eller volume
  • Hele dit system bør ikke løbe tør for fri harddisk-plads, hvis et ødelagt værktøj bliver ved med at skrive filer til en partition eller volume
  • Hvis nødvendigt, et filsystem-tjek er reduceret i tid, idet flere tjek kan blive gjort parallelt (selvom denne fordel er større med flere harddiske end med flere partitioner)
  • Sikkerhed kan blive forøget ved at mounte nogle partitioner eller volumes read-only (kun-læs), nosuid (setuid bits er ignoreret), noexec (executable bits er ignoreret) osv.

Dog har flere partitioner en stor ulempe: hvis det ikke er opsat ordentligt, kan det betyde at have et system med masser af fri plads på én partition og intet på en anden. Der er også en begrænsning på 15 partitioner på SCSI og SATA.

4.c. At bruge fdisk på MIPS for at partitionere din disk

SGI-maskiner: Oprettelse af en SGI Disk Label

Alle diske i et SGI system kræver en SGI Disk Label, hvilken fungerer som noget der ligner Sun & MS-DOS disklabels -- Den gemmer information omkring diskens partitioner. At lave en SGI Disk Label vil skabe to specielle partitioner på disken:

  • SGI Volume Header (den niende partition): Denne partition er vigtig. Det er her kerne billed-filerne skal hen.
  • SGI Volume (den 11. partition): Denne partitions formål minder om Sun Disklabel's tredje partition af "Hele disken". Denne partition dækker hele disken, og bør forblive uberørt. Den tjener ikke noget specielt formål andet end at hjælpe PROM på en ikke dokumenteret facon (eller den bliver brugt af IRIX på en eller anden måde).

Advarsel: SGI Volume Headeren skal begynde ved cylinder 0. Hvis dette fejler, så vil du ikke være i stand til at starte op fra disken.

Det følgende er et eksempel udsnit fra en fdisk session. Læs det og ret det til efter dine behov...

Kode oversigt 3.1: At lave en SGI Disklabel

# fdisk /dev/sda
http://gentoo-dk.berlios.de/sider/status.xml
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):

Bemærk: Hvis din harddisk allerede har en eksisterende SGI Disklabel, så vil fdisk ikke tillade at lave en ny label. Der er to måder at komme omkring dette på. En er at lave en Sun eller MS-DOS disklabel, skrive ændringerne til disken og genstarte fdisk. Den anden er at overskrive partitionstabellen med null data via den følgende kommando: dd if=/dev/zero of=/dev/sda bs=512 count=1.

Hvis du er usikker på at bruge fdisk, kig lidt længere nede i vejledningen til partitionering på Cobalt. Konceptet er præcist det samme -- husk at lade "volume header" og "hele disk-partitionen" være.

Nu da dine partitioner er oprettet, kan du fortsætte med Oprettelse af filsystemer.

Cobalt maskiner: Partitionering af din harddisk

På Cobalt maskiner, forventer BOOTROM at se en MS-DOS MBR, så partitioneringen af harddisken er relativt nemt -- det er endda gjort på samme måde, som du ville gøre det på en Intel x86 maskine. Dog er der nogle tinge som du bør tage dig i agt på.

  • Cobalt firmware vil forvente at /dev/hda1 er en Linux partition, som er formateret EXT2 Revision 0. EXT2 Revision 1 partitioner vil IKKE VIRKE! (Cobalt BOOTROM forstår kun EXT2r0)
  • Når ovenstående er sagt, skal partitionen indeholde en gzipped ELF billed-fil, vmlinux.gz i roden af dens partition, hvorfra den hentes, ligesom kernen

På grund af dette, anbefaler jeg at oprette en ~20MB /boot partition, som er formateret EXT2r0, hvorpå du installerer CoLo & dine kerner. Dette tillader dig at køre et moderne filsystem (EXT3 eller ReiserFS) til dit root-filsystem.

Jeg forudsætter at du har oprettet /dev/hda1, som skal mountes senere som en /boot-partition. Hvis du ønsker at gøre dette til /, skal du huske at kigge på PROMs forventninger senere.

Vi forsætter... For at oprette partitioner, skal du taste fdisk /dev/hda ved prompten. Hovedkommandoerne som du skal bruge er disse:

  • o: Sletter den gamle partitionstabel, og starter med en tom MS-DOS partitionstabel
  • n: Ny partition
  • t: Ændre partitionstype
    • Brug type 82 til Linux Swap og 83 til Linux FS
  • d: Slet en partition
  • p: Vis (udskriv) partitionstabelen
  • q: Afslut -- lade den gamle partitionstabel være.
  • w: Afslut -- skrive den nye partitionstable.

Kode oversigt 3.2: Partitionering af harddisken

# 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)
 
(Start med at slette de eksisterende partitioner)
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)
  	 
(Du kan nu verificere at partitionstabellen er tom, ved at bruge 'p'-kommandoen)
  	 
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
  	 
(Oprette /boot-partitionen)
  	 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
  	 
(Tast bare ENTER her, for at acceptere standard)
  	 
First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M
  	 
(og nu, hvis vi taster 'p' igen, bør vi se den nye partition)
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
  	 
(Resten, jeg plejer at indsætte en extended partition, så jeg opretter denne)
  	 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
  	 
(Igen, standarden er fint nok, tast bare ENTER.)
  	 
First cylinder (41-19870, default 41):
Using default value 41
  	 
(Vi ønsker at bruge hele disken her, så tast ENTER igen)
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870
  	 
(Nu, / partitionen -- Jeg bruger separate partitioner til /usr, /var,
etc... så / kan være lille.  Juster efter dine ønsker.)
  	 
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
  	 
(... og lige så dan ved andre partitioner ...)
  	 
(Sidst, swap-plads.  Jeg anbefaler mindst 250 MB swap,
ønskbart 1 GB)
  	 
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
  	 
(Now, if we check our partition table, everything should mostly be ship
shape except for one thing...)
  	 
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
  	 
(Noter at hvordan #10, din swap-partition stadigvæk er type 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)
  	 
(Det bør ordne det... bare for at verificere...)
  	 
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
  	 
(Nu, lad os skrive den nye partitionstabel.)
  	 
Command (m for help): w
The partition table has been altered!
  	 
Calling ioctl() to re-read partition table.
Syncing disks.
  	 
#

Og det er alt hvad der skulle gøres. Du bør nu være klart til at forsætte med næste trin: Oprettelse af filesystemer.

4.d. Oprettelse af filsystemer

Introduktion

Nu da dine partitioner er lavet, er det tid til at lave filsystemer på dem. Hvis du er ligeglad med hvilket filsystem du vælger og er tilfreds med hvad vi bruger som standard her i denne håndbog, så kan du fortsætte med At anvende et filsystem på en partition. Ellers kan du fortsætte for at lære mere om de tilgængelige filsystemer...

Filsystemer?

Der er adskillige filsystemer til rådighed. ReiserFS, Ext2 og ext3 er fundet stabile på MIPS-arkitekturen, imens de andre er eksperimentielle.

ext2 er det afprøvede og sande Linux filsystem, men det har ikke metadata journaler, hvilket betyder at rutinemæssige tjek af filsystemer ved opstart kan tage en del tid. Der er nu et udvalg af filsystemer af nyere generation med journal, der kan tjekkes for konsekvens meget hurtigt og er derfor at foretrække fremfor deres tilsvarende uden journal. Filsystemer med journal kan afskaffe lange ventetider når dit system starter op og dine filsystemer er i en ikke konsekvent tilstand.

ext3 er den journaliserede udgave af ext2 filsystemet, der giver metadata journaler til hurtig genskabelse og yderligere andre ydelse fremmende journal muligheder så fuld data og ordnet data journal. ext3 er meget godt og et pålideligt filsystem. Det har en ekstra mulighed for at bruge hashede b-træer til at indeksere, hvilket giver høj ydelse i næsten alle situationer. For at sige det kort, ext3 er et fremragende filsystem.

ReiserFS er et filsystem baseret på B*-træer der har en god alsidig ydelse og slår både ext2 og ext3 stor når det kommer til at håndtere små filer (filer mindre end 4k), ofte med en faktor på 10x-15x. ReiserFS skalerer også ekstremt godt og har metadata journaler. Fra og med kerne 2.4.18+ er ReiserFS solid og brugbart til både et formål som alment filsystem, og til ekstreme tilfælde hvor man laver store filsystemer, brugen af mange små filer, meget store filer og biblioteker, der indeholder titusinder af filer.

XFS er et filsystem med metadata journaler, som kommer med et robust sæt af muligheder og er optimeret til skalerbarhed. Vi anbefaler kun at bruge dette filsystem til Linux systemer med high-end SCSI og/eller fiberkanal lager og en uafbrydbar strømforsyning. Fordi XFS aggressivt cachér indkommende data i RAM, kan dårligt designede programmer (dem der ikke tager fornuftige forholdregler, når de skriver filer til disken og der er faktisk en del af dem) miste en hel del data, hvis systemet uventet går ned.

JFS er IBM's høj-ydelses filsystem med journal. Det er fornyligt blevet klar til produktion og der har ikke være tilstrækkelige optegnelser til at kommentere positivt eller negativt omkring dets stabilitet pt.

At anvende et filsystem på en partition

For at lave et filsystem på en partition eller enhed, så er der værktøjer til rådighed for hvert filsystem:

Filsystem Kommando til at lave
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

F.eks. for at få boot partitionen (/dev/sda1 i vores tilfælde) i ext2 og root partitionen (/dev/sda3 i vores tilfælde) i ext3 (som i vores tilfælde), ville vi bruge:

Kode oversigt 4.1: At anvende et filsystem på en partition

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

Lav nu filsystemerne på dine for nyligt skabte partitioner (eller logiske enheder).

Advarsel: Hvis du installerer på en Cobalt-server, husk at /dev/hda1 SKAL være af typen EXT2 revision 0; Alt andet (e.g. EXT2 revision 1, EXT3, ReiserFS, XFS, JFS and others) VIL IKKE VIRKE! Du kan formatere partitionen ved at bruge kommandoen: mke2fs -r 0 /dev/hda1.

Advarsel: Også, være på agt at arcboot på nuværende tidspunkt ikke kan læse andre filsystemer end EXT2, EXT3 og ISO9660 (nuværende versioner). På grund af dette, skal /boot på SGI-maskiner også være på en EXT2- eller EXT3-partition.

At aktivere swap-partitionen

mkswap er kommandoen der bruges til at oprette og initialisere swap partitioner:

Kode oversigt 4.2: At lave en swap signatur

# mkswap /dev/sda2

For at aktivere swap-partitionen, brug swapon:

Kode oversigt 4.3: At aktivere swap-partitionen

# swapon /dev/sda2

Lav og aktiver swap ved at bruge ovenstående kommandoer.

4.e. At mounte

Nu hvor dine partitioner er initialiserede og huser et filsystem, er det tid til at mounte disse partitioner. Brug mount kommandoen. Glem ikke at lave de nødvendige mount-biblioteker til hver partition, som du har oprettet. Som et eksempel vil vi mounte root og boot-partionerne:

Kode oversigt 5.1: At mounte partitioner

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

Bemærk: Hvis du vil have din /tmp til at være på en separat partition, så vær sikker på at ændre dens rettigheder efter at være blevet mountet: chmod 1777 /mnt/gentoo/tmp. Dette gælder også for /var/tmp.

Vi bliver også nødt til at mounte proc filsystemet (en virtuel grænseflade til kernen) på /proc. Men først skal vi placere vores filer på partitionerne.

Forsæt med Installere Gentoo installationsfiler.

5. Installation af Gentoo installationsfiler

5.a. Installation af stage-tarball

At sætte Dato/Tid rigtigt

Før du forsætter, så bliver du nødt til at tjekke din dato/tid og opdatere den. Et ur der ikke er sat ordentlig op kan lede til mærkelige resultater i fremtiden!

For at verificere den nuværende dato/tid, kør da date:

Kode oversigt 1.1: At verificere dato/tid

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

Hvis dato/tid bliver vist forkert, opdater den da ved brug af date MMDDhhmmCCYY syntaksen (Måned, Dag, h(time), minut, C(årtusinde) og Y(år)). F.eks. sæt datoen til den 29. marts 16:21 i året 2005:

Kode oversigt 1.2: At sætte dato/tid

# date 032916212005

Gør dit valg

Det næste trin, som du skal udføre, er at installere stage-tarball'en, som du har valgt, på dit system. Du har muligheden for at hente den krævede tarball fra Internet eller, hvis du har startet fra én af Gentoo universelle installationsCDer, kopiere den så fra CDen selv. Hvis du har en universel CD, og den ønskede stage er på CDen, at hente den fra Internet, er spild af båndbredde, idet stage-filerne er de samme. I de fleste tilfælde kan kommandoen uname -m blive brugt til at finde ud af, hvilken stage-fil du skal hente.

5.b. Standard: Bruge af stage-fil fra Internet

Hentning af stage-tarball

Skift til dit Gentoo mountpunkt, hvor du mountede dit filsystem (højst sandsynligt /mnt/gentoo):

Kode oversigt 2.1: Gå til Gentoo-mountpunkt

# cd /mnt/gentoo

Afhængigt af dit installationsmedie, har du et par forskellige værktøjer tilgængeligt til at hente en stage. Hvis du har links2 til rådighed, så kan du med det samme surfe hen til Gentoo filspejl-listen og vælge et filspejl nær ved dig.

Hvis du ikke har links2 tilgængeligt, bør du have lynx til rådighed. Hvis du har brug for en proxy, export http_proxy- og ftp_proxy-variablerne:

Kode oversigt 2.2: Opsætning af proxy-informationer til lynx

# export http_proxy="http://proxy.vært.dk:port"
# export ftp_proxy="http://proxy.vært.dk:port"

Vi vil nu forudsætte at du har links2 tilrådighed.

Vælg releases/ biblioteket, efterfulgt af arkitekturen (x86/) og Gentoo-versionen (for eksempel 2005.1/) og afslut med at gå ind i stages/ biblioteket. Der skulle du gerne se alle tilgængelige stage-filer til din arkitektur (de vil evt. blive gemt i underbiblioteker som er navngivet efter hver underarkitektur). Vælg én og tryk på D for at hente den. Når du er færdig tryk da på Q for at lukke browseren.

Kode oversigt 2.3: Surf til filspejl-listen med links2

# links2 http://www.gentoo.org/main/en/mirrors.xml
(Hvis du har brug for proxy-understøttelse med links2:)      
# links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Hvis du vil tjekke integriteten af den downloadede stage tarball, brug da md5sum og sammenlign outputtet med den MD5 checksum der er på filspejlet. F.eks. for at tjekke ægtheden af x86 stage tarball:

Kode oversigt 2.4: Et eksempel på at tjekke integriteten af en stage tarball

# md5sum -c stage1-x86-2005.1.tar.bz2.md5
stage1-x86-2005.1.tar.bz2: OK

Udpakning af en stage tarball

Nu skal vi udpakke din hentede stage-fil til dit system. Vi bruger GNUs tar til dette, eftersom det er det nemmeste:

Kode oversigt 2.5: Udpakning af stagen

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

Sørg for at du bruger de samme parametre (-xvjpf). x'et står for Extract, v'et står for Verbose for at se hvad der sker i udpakningsprocessen (denne er valgfri), j'et står for Decompress with bzip2, p'et står for Preserve permissions og f'et pointerer at vi vil udpakke en fil, i stedet for standard input.

Advarsel: stage3-athlon-xp-2005.1.tar.bz2, stage3-pentium3-2005.1.tar.bz2 og stage3-pentium4-2005.1.tar.bz2-filerne har seriøse rettighedsfejl. Efter at have udpakket disse, kør chmod 0755 /mnt/gentoo for at ordne denne fejl før du fortsætter med installationen.

Bemærk: Nogle arkitekturers (f.eks. MIPS) installationsCDer og opstart-billedfiler afhænger at om tar er indbygget til BusyBox, som på nuværende tidspunkt ikke understøtter -v valgmuligheden. Derfor vil den måske ikke virke.

Nu da denne etape er færdig, fortsæt med Installere Portage.

5.c. Alternativ: Brug af en stage-fil fra installationsCDen

Udpakning af stage-tarball

De forskellige etaper på CDen ligger i /mnt/cdrom/stages biblioteket. For at se en liste af tilgængelige stage-filer, brug ls:

Kode oversigt 3.1: Liste af tilgængelige stage-filer

# ls /mnt/cdrom/stages

Hvis systemet svarer med en fejl, er det måske fordi du skal mounte CDROM-drevet først:

Kode oversigt 3.2: Mounting af CDROM-drevet

# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages

Gå nu ind i dit Gentoo mountpunkt (som regel /mnt/gentoo):

Kode oversigt 3.3: Skift bibliotek til /mnt/gentoo

# cd /mnt/gentoo

Vi vil nu udpakke den valgte stage-tarball. Vi vil gøre dette ved brug af af GNU tar værktøjet. Sørg for at bruge de samme parametre (-xvjpf)! Igen, er v-argumentet valgfrit og ikke understøttet i nogle tar-versioner. I det næste eksempel vil vi udpakke stage3-<subarch>-2005.1.tar.bz2. Sørg for at udskifte tarball-filnavnet med den valgte stage-fil.

Kode oversigt 3.4: Udpakning af stage-tarball

# tar -xvjpf /mnt/cdrom/stages/stage3-<subarch>-2005.1.tar.bz2

Advarsel: stage3-athlon-xp-2005.1.tar.bz2, stage3-pentium3-2005.1.tar.bz2 og stage3-pentium4-2005.1.tar.bz2-filerne har seriøse rettighedsfejl. Efter at have udpakket disse, kør chmod 0755 /mnt/gentoo for at ordne denne fejl før du fortsætter med installationen.

Nu da denne etape er installeret, fortsæt med Installere Portage.

5.d. Installere Portage

Udpakning af Portage-snapshot

Du skal nu installere et Portage-snapshot, en samling af filer, som informerer hvilke softwaretitler, som du kan installere, hvilke profiler der er tilgængelige osv.

Hent og Installere et Portage-snapshot

Gå til det mount-punkt, hvor du mountede dit filsystem (meget sandsynligt /mnt/gentoo):

Kode oversigt 4.1: Går til Gentoo-mountpunktet

# cd /mnt/gentoo

Fyr op for links2 (eller lynx) og gå til vores Gentoo filspejleliste. Vælg et filspejl tæt på dig og åben snapshots/ folderen. Derinde hent den sidste nye Portage-snapshot ved at vælge den og taste D.

Kode oversigt 4.2: Gennemse Gentoo filspejle

# links2 http://www.gentoo.org/main/en/mirrors.xml

Afslut nu browseren ved at taste Q. Du vil nu have et Portage-snapshot gemt i /mnt/gentoo. I næste trin, vil vi udpakke Portage-snapshottet til dit filsystem. Vær sikker på at du bruger præcist denne kommando; den sidste valgmulighed er med stort C, ikke c.

Kode oversigt 4.3: Udpakning af Portage-snapshot

(Udskift <dato> med den datostempel af den hentede snapshot)
# tar -xvjf /mnt/gentoo/portage-<date>.tar.bz2 -C /mnt/gentoo/usr

5.e. Opsætning af kompileringsparametre

Introduktion

For at optimere Gentoo kan du sætte et par variabler, som har inflydelse på den måde Portage opfører sig. Alle disse variabler kan sættes som miljø-variable (ved brug af export), men det er ikke permanent. For at gemme din opsætning, kommer Portage med /etc/make.conf, en opsætningsfil til Portage. Det er denne fil, vi nu vil rette i.

Bemærk: En kommenteret liste af alle mulige variable, kan findes i /mnt/gentoo/etc/make.conf.example. For at få en fungerende Gentoo installation, behøver du kun at sætte de variabler, som er nævnt herunder.

Åben dit favorit redigeringsprogram (i denne guide bruger vi nano), så vi kan komme i gang med at ændre de optimeringsvariabler, vi vil diskutere herefter.

Kode oversigt 5.1: Åbning af /etc/make.conf

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

Som du nu sikkert har lagt mærke til, er make.conf.example-filen struktureret på en generel måde: kommentar-linier, som starter med "#" og andre linier, som definerer variabler ved brug af VARIABLE="indhold" syntaxen. make.conf bruger samme syntaks. Flere af disse variabler bliver diskuteret i næste trin.

CHOST

Advarsel: Selvom det måske kan være interessant for ikke-stage1 brugere, så skal de IKKE udskifte deres CHOST-opsætning i make.conf. Gør man dette, bliver systemet måske ubrugeligt. Igen: Du skal kun ændre denne variabel, hvis du bruger en stage1-installation.

CHOST-variablen definerer hvilken arkitektur, gcc skal kompilere programmerne til. Mulighederne er:

Arkitektur Underarkitektur CHOST opsætning
x86 i386 i386-pc-linux-gnu
x86 i486 i486-pc-linux-gnu
x86 i586 i586-pc-linux-gnu
x86 i686 og derover (inkl. Athlon) i686-pc-linux-gnu
alpha alpha-unknown-linux-gnu
ppc powerpc-unknown-linux-gnu
ppc64 powerpc64-unknown-linux-gnu
sparc sparc-unknown-linux-gnu
sparc64 sparc-unknown-linux-gnu
hppa (generic) hppa-unknown-linux-gnu
hppa pa7000 hppa1.1-unknown-linux-gnu
hppa pa8000 og derover hppa2.0-unknown-linux-gnu
mips mips-unknown-linux-gnu
amd64 x86_64-pc-linux-gnu

Vær venligst sikker på at du bruger den korrekte CHOST-indstilling. F.eks. er CHOST-indstillingen til sparc64 stadigvæk sparc-unknown-linux-gnu og ikke sparc64-unknown-linux-gnu!

Brugere, som er interesseret i at bootstrappe hele deres system med NPTL-understøttelse på et x86-system, skal indstille deres CHOST til i586-pc-linux-gnu eller højere.

CFLAGS og CXXFLAGS

CFLAGS- og CXXFLAGS-variablerne definerer optimeringsflag til gcc, med C og C++ kompilerne i den rækkefølge. Selvom vi definerer dem generelt her, vil du kun få optimal ydeevne, hvis du optimerer disse flag for hvert program seperat. Det skyldes at alle programmer er forskellige.

I make.conf skal du generelt optimere de flag du tror vil gøre dit system bedst. Lad være med at placere eksperimenterende opsætninger i denne variabel; For meget optimering kan få programmer til at opføre sig mærkelig (gå ned, eller endnu værre, fungere forkert).

Vi vil ikke forklare alle mulige optimeringsmuligheder. Hvis du vil kende dem alle, kan du læse GNU Online Manual(er) eller gcc info siden (info gcc virker kun på et færdigt opsat Linux-system). make.conf.example-filen i sig selv, indeholder også mange eksempler og informationer; glem ikke, at du også skal læse dette.

Den første parameter er -march=-flaget, som specificerer navnet på din arkitektur. Mulige parametre er beskrevet i make.conf.example-filen (som kommentarer). For eksempel til x86 Athlon XP arkitekturen:

Kode oversigt 5.2: GCC march opsætning

# AMD64 brugere, som ønsker at bruge et rent 64 bit system, bør bruge -march=k8
-march=athlon-xp
#EM64T brugere bør bruge -march=nocona

En anden parameter er -O-flaget(det er et stort O, ikke et nul), som specificerer gccs optimeringsklasse-flag. Mulige klasser er s (for størrelses optimering), 0(nul - ingen optimering), 1, 2, 3 til mere hastighedsoptimering, (hver klasse har samme flag som den forrige, plus nogle ekstra). For eksempel en klasse 2 optimering:

Kode oversigt 5.3: GCC O opsætning

-O2

Et andet populært optimeringsflag er -pipe (brug af pipes i stedet for midlertidige filer til kommunikation mellem forskellige stadier af kompilering).

Husk at hvis du bruger -fomit-frame-pointer (som sørger for at framepointere ikke er i registret til de funktioner, der ikke skal bruge den) kan skabe seriøse problemer med at debugge programmer!

Når du definerer dine CFLAGS og CXXFLAGS, bør du kombinere forskellige optimeringsflag, som i det følgende eksempel:

Kode oversigt 5.4: Definering af CFLAGS og CXXFLAGS variablerne

# AMD64 brugere bør bruge march=k8
CFLAGS="-march=athlon-xp -pipe -O2"
# EM64T brugere bør bruge march=nocona
CXXFLAGS="${CFLAGS}" # Bruger den samme opsætning til begge flag

MAKEOPTS

Med MAKEOPTS definerer du, hvor mange parallele kompileringer, der skal fortages, når du installere en pakke. Et godt valg er antallet af CPUer i dit system, plus en ekstra, men den retningslinie er ikke altid perfekt.

Kode oversigt 5.5: MAKEOPTS for et regulært, 1-CPUs system

MAKEOPTS="-j2"

Klar, parat, start!

Opdater din /mnt/gentoo/etc/make.conf, så den passer dig, og gem den (nano-brugere ville bruge Ctrl+X. Du er nu klar til at fortsætte med Installation af Gentoo basissystem.

6. Installation af Gentoo basissystem

6.a. At skifte rod-mappe (Chrooting)

Valgfrit: Valg af filspejle

For at hente kildekoderne hurtigt, er det anbefalet at vælge en hurtig filspejl. Portage vil kigge i din make.conf-fil efter GENTOO_MIRRORS-variablen og brug filspejlene deri. Du kan kigge igennem vores Filspejle liste og søge efter en filspejl (eller filspejle), som er i nærheden af dig (de er typisk også dem der er de hurtigste), men vi leverer et lækkert værktøj kaldet mirrorselect som leverer dig en grænseflade til at vælge de filspejle du vil have.

Kode oversigt 1.1: Brug af mirrorselect til GENTOO_MIRRORS-variablen

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

Advarsel: Vælg ikke nogen IPv6 filspejle. Vores stage-filer understøtter på nuværende tidspunkt ikke IPv6.

En anden vigtig indstilling er SYNC-indstillingen i make.conf. Denne variabel indeholder rsync-seren, som du ønsker at bruge, når du opdaterer dit Portage-træ (samlingen af ebuilds og scripts, som indeholder alle informationer, som Portage har brug for at hente og installere software). Selvom du kan manuelt indtaste serveren selv, kan mirrorselect gør dette let for dig:

Kode oversigt 1.2: Valg af rsync-filspejl ved brug af mirrorselect

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

Efter at have kørt mirrorselect, er det klogt at kigge alle indstillingerne igennem i /mnt/gentoo/etc/make.conf!

Kopiering af DNS-information

Der mangler stadig én ting, før vi skifter til det nye miljø, og det er at kopiere DNS-informationerne i /etc/resolv.conf. Du skal gøre dette for at sikre, at netværket stadig virker, efter skiftet til det nye miljø. /etc/resolv.conf indeholder navneserverne til dit netværk.

Kode oversigt 1.3: Kopiering af DNS-information

("-L" muligheden er nødvendigt for at være sikker på at vi ikke kopiere et symbolsk link)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Mount af proc-filsystemet

Mount /proc-filsystemet til /mnt/gentoo/proc for at tillade installationen at bruge de kerne-leverede informationer, selv inde i det chrootede miljø.

Kode oversigt 1.4: Mount af /proc

# mount -t proc none /mnt/gentoo/proc

Skift til det nye miljø

Nu, hvor alle partitionerne er initialiseret og basismiljøet installeret, er det tid til at skifte til vores nye installationsmiljø, ved at lave et rod skifte. Det betyder at vi skifter fra det nuværende installationsmiljø (installationsCD eller andet installationsmedie) til dit installationssystem (nemlig de initialiserede partitioner).

Denne rodskiftning gøres i tre skridt. Først vil vi ændre roden fra / (på installationsmediet) til /mnt/gentoo (på dine partitioner) ved at bruge chroot. Derefter vil vi skabe et nyt miljø ved at bruge env-update, som hovedsageligt opretter miljø-variabler. Til sidst indlæser vi disse variabler ind i hukommelsen, ved brug af source.

Kode oversigt 1.5: Skifte til det nye miljø

# chroot /mnt/gentoo /bin/bash
# env-update
 * Caching service dependencies...
# source /etc/profile

Tillykke! Du er nu inde i dit eget Gentoo Linux miljø. Selvfølgelig er det langt fra færdig, hvilket er derfor installationen stadigvæk har nogle sektioner tilbage :-)

Opdatering af Portage-træet

Du bør nu opdatere dit Portage-træ til den sidste nye. emerge --sync gør dette for dig.

Kode oversigt 1.6: Opdatering af Portage-træet

# emerge --sync
(Hvis du bruger en langsom terminal, som f.eks. framebuffer eller en seriel
konsol, kan du tilføje --quiet-valgmuligheden for at sætte lidt fart på :)
# emerge --sync --quiet

Hvis du er bag en firewall, som blokerer rsync-trafik, kan du bruge emerge-webrsync, som vil hente og installere en portage-snapshot til dig.

Hvis du bliver advaret om, at der eksisterer en ny version af Portage og at du skal opdatere Portage, bør du ignorere det. Portage bliver opdateret for dig senere under installationen.

Valg af den rigtige profil

Først introducerer vi lige en definition.

En profil er en byggeklods til alle Gentoo-systemer. Den specificere ikke kun standardværdier til CHOST, CFLAGS og andre vigtige variabler, den låser også systemet til et specifikt område af pakkeversioner. Disse er alle håndteret af Gentoo-udviklere.

Tidligere var sådan en profil næsten aldrig rørt af en bruger. Dog kan x86-, hppa- og alpha-brugere vælge to profiler, en til 2.4-kernen og en til 2.6-kernen. Dette krav er blevet fremsat for at forbedre integrationen af 2.6-kerner. ppc- og ppc64-arkitekturerne har også yderligere profiler tilgængeligt. Vi vil tale om dem senere.

Du kan se hvilke profiler, som du bruger på nuværende tidspunkt, med følgende kommando:

Kode oversigt 1.7: Verifikation af systemprofil

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

Hvis du bruger en af de tidligere nævnte tre arkitekturer, vil standardprofilen give dig et Linux 2.6-baseret system. Det er anbefalet som standard, men du har også mulighed for at vælge en anden profil.

Nogen brugere ønsker at installere et system baseret på den gamle Linux 2.4-profil. Hvis du har en god begrundelse for dette, bør du først kigge efter om en yderligere profil eksisterer. På x86, kan vi gøre dette med følgende kommando:

Kode oversigt 1.8: Finding af at yderligere profil eksisterer

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

Det ovenstående eksempel viser at den yderligere 2.4 profil eksisterer (f.eks. klagede den ikke over en manglede fil eller folder). Det er anbefalet at du bruger standarden, men hvis du ønsker at skifte, kan du gøre som følgende:

Kode oversigt 1.9: Skifte til en 2.4 profil

(Vær sikker på at bruge den rigtige arkitektur, eksempelet nedenfor er til x86)
# ln -snf /usr/portage/profiles/default-linux/x86/2005.1/2.4 /etc/make.profile
(Vise en liste af filer i 2.4-profilen)
# 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

Til ppc, er der en del nye profiler leveret med 2005.1.

Kode oversigt 1.10: PPC-profiler

  	 (Normal PPC-profil, til alle PPC-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc /etc/make.profile
  	 (G3 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G3 /etc/make.profile
  	 (G3 Pegasos profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G3/Pegasos/ /etc/make.profile
  	 (G4 (Altivec) profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G4 /etc/make.profile
  	 (G4 Pegasos profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G4/Pegasos/ /etc/make.profile
  	 

Til ppc64, er der en del nye profiler leveret med 2005.1.

Kode oversigt 1.11: PPC64-profiles

  	 (Standard 64bit userland PPC64-profil, til alle PPC64-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/64bit-userland /etc/make.profile
  	 (Standard 32bit userland PPC64-profil, til alle PPC64-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/32bit-userland /etc/make.profile
  	 (Hver type af userland har underprofiler, som følger her, med (userland) erstatet af den valgte userland fra ovenstående)
  	 (970 profil til JS20)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/970 /etc/make.profile
  	 (G5 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/970/pmac /etc/make.profile
  	 (POWER3 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power3 /etc/make.profile
  	 (POWER4 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power4 /etc/make.profile
  	 (POWER5 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power5 /etc/make.profile
  	 (Multilib-profilen er ikke stabil til denne udgivelse.)
  	 

Opsætning af USE-variabler

USE er en af de mest kraftfulde variabler, som Gentoo udbyder til dens brugere. Mange programmer kan kompileres med eller uden valgfri understøttelse af bestemte ting. For eksempel, kan nogle programmer kompileres med gtk understøttelse, eller med qt understøttelse. Andre kan kompileres med eller uden SSL understøttelse. Nogle programmer kan endda kompileres med framebuffer understøttelse (svgalib) i stedet for X11-understøttelse (X-server).

De fleste distributioner kompilerer deres pakker med understøttelse for så meget som muligt, hvilket forøger størrelsen og starttiden på programmerne, for ikke at tale om de enorme mængder af afhængigheder. Med Gentoo kan du selv definere, hvilke muligheder, dine pakker skal kompileres med. Det er her USE, kommer ind i spillet.

I USE-variablen, definerer du nøgleord, som bliver lagt oven på kompileringsparametrene. For eksempel vil ssl kompilere ssl understøttelse ind i de programmer, der understøtter det. -X vil fjerne understøttelse af X-server (bemærk minus-tegnet forrest).gnome gtk -kde -qt vil kompilere dine programmer med gnome (og gtk) understøttelse, men ikke med kde (og qt) understøttelse, hvilket gør dit system fuldt ud fin-indstillet til GNOME.

Standard USE-indstillingerne er placeret i make.defaults-filerne for din profil. Du finder make.defaults-filerne i folderen, som /etc/make.profile peger på samt alle næstgående foldere. Standard USE-indstilling er summen af alle USE-indstillinger i alle make.defaults-filere. Hvad du placerer i /etc/make.conf bliver udregnet mod disse standardværdier. Hvis du lægger noget til USE-indstillingen, bliver den lagt til standardlisten. Hvis du fjerner noget fra USE-indstillingen (ved at placere et minus-tegn foran det) så bliver det fjernet fra standardlisten (hvis det på noget tidspunkt var til stede). Redigér ALDRIG noget i /etc/make.profile biblioteket; det bliver overskrevet når du opdaterer Portage!

En fuld beskrivelse af USE kan findes i den anden halvdel af Gentoo-håndbogen, USE-flag. En fuld beskrivelse er tilgængeligt. USE-flag kan blive fundet i dit system ved /usr/portage/profiles/use.desc.

Kode oversigt 1.12: Se mulige USE-flag

# less /usr/portage/profiles/use.desc
(Du kan scrolle ved bruge af pil-tasterne og afslutte ved at trykke 'q')

Som et eksempel, viser vi en USE-indstilling til et KDE baseret system med DVD, ALSA og brænding af CD-ROM understøttelse:

Kode oversigt 1.13: Åbning af /etc/make.conf

# nano -w /etc/make.conf

Kode oversigt 1.14: USE indstilling

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

Valgfrit: GLIBC Locales

Du vil sikkert bruge en eller måske to locales på dit system. Indtil nu efter samlingen af glibc, var et fuld sæt af locales være tilgængelige og oprettet. Fra nu af kan du aktivere userlocales USE-flaget og specifere kun de locales, du har brug for i /etc/locales.build. Gør kun dette, hvis du ved hvilke locales, som du kan vælge. Dette vil ikke virke til bootstrapping, men når du gensamler glibc bagefter vil den.

Kode oversigt 1.15: Aktivering af userlocales USE-flag, specielt til glibc

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

Specificer nu locales, som du ønsker at bruge:

Kode oversigt 1.16: Åbning af /etc/locales.build

# nano -w /etc/locales.build

De følgende er eksempler på hvad du får ved både Engelsk (Amerikansk) og Tysk (Tyskland) med de tilhørende karakter-formater (som UTF-8).

Kode oversigt 1.17: Specificering af dine locales

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

6.b. Forskelle mellem Stage1, Stage2, og Stage3

Sæt dig ned og tænk over de tidligere trin. Vi bad dig vælge stage1, stage2 eller stage3 og advarede dig, om at dit valg ville være vigtigt for de videre installationstrin. Her er det første sted, hvor dit valg definerer de følgende trin.

  • Hvis du valgte stage1, så skal du følge begge trin i dette kapitel (startende med Fra Stage1 til Stage2)
  • Hvis du valgte stage2 skal du kun springe det første trin over og straks starte med det andet trin (Fra Stage2 til Stage3)
  • Hvis du valgte stage3 så kan du springe begge trin over og fortsætte med Opsætning af kernen

6.c. Fra Stage1 til Stage2

Introduktion til bootstrapping

Så du vil kompilere alting fra bunden? jamen okay så :-)

I dette trin vil vi bootstrappe dit Gentoo system. Dette tager lang tid, men resultatet er et system, som er blevet optimeret, fra bunden og op, til din specifikke maskine og dine behov.

At bootstrappe betyder at man bygger GNU C biblioteket, GNU Compiler Collection og flere andre nøgle-systemprogrammer. GNU Compiler Collectionen skal enddag bygges to gange: Først med den generelle compiler, som vi udbyder, og en anden gang med den compiler, du lige har bygget.

Før vi starter med at bootstrappe, vil du måske hente alt kildekode først. Hvis du ikke vil gøre dette, fortsæt med Bootstrap af systemet.

Valgfrit: Hent kildekoden først

Hvis du ikke har kopieret alt kildekoden til dit system tidligere, så vil bootstrap-scriptet automatisk hente alle de nødvendige filer. Hvis du vil hente kildekoden først og så senere bootstrappe system (f.eks. fordi du ikke vil have din internet forbindelse åben under kompilering) så kan du bruge -f (bogstavet f for det engelske fetch) parameteren på bootstrap-scriptet, det vil resultere i at den henter alt kildekoden for dig.

Kode oversigt 3.1: Download den nødvendige kildekode

# cd /usr/portage
# scripts/bootstrap.sh -f

Bootstrappe af systemet

Okay så, tag dit keyboard og tast den næste kommando ind for at starte bootstrap-processen. Gå derefter et eller andet sted hen og underhold dig selv fordi det her kommer til at tage en god del tid, at blive færdig med.

Kode oversigt 3.2: At bootstrappe systemet

# cd /usr/portage
# scripts/bootstrap.sh

Forsæt nu med det næste trin, Fra Stage2 til Stage3.

6.d. Fra Stage2 til Stage3

Introduktion

Hvis du læser denne sektion, så har du et bootstrappet system (enten fordi du selv har bootstrappet tidligere, eller fordi du bruger en stage2). Du skal nu til at bygge alle systempakkerne.

Alle systempakkerne? Nej ikke rigtigt. I dette trin bygger du de system pakker, hvor der ikke er nogle alternativer til, og som skal bruges til et virkende system. Nogle system pakker har flere alternativer (så som system loggere) og eftersom Gentoo, handler om valg, så vil vi ikke tvinge en type ned over hovedet på dig.

Valgfrit: Oversigt over hvad der bliver lavet

Hvis du vil vide hvilke pakker, der vil blive installeret, så kan du køre emerge --pretend --emptytree system. Dette vil vise en liste med alle pakker der vil blive kompileret. Eftersom den liste er rimelig stor skal du nok bruge en pager som f.eks. less eller more til at gå op og ned gennem listen.

Kode oversigt 4.1: Vis hvad 'emerge system' vil gøre

# emerge --pretend --emptytree system | less

Noter at hvis du ikke har rørt ved standard CFLAGS/CXXFLAGS-indstillinger, er brug af emerge --pretend --newuse system nok: det vil genbygge programmer, som er berørte af ændringer i USE-flags (i sammenligning med de USE-flag, som vi brugte, da vi byggede stage2). Hvis du heller ikke rørte ved USE-flag heller, hvorfor kører du så en stage2-installation?

Valgfrit: Hente kildekoder

Hvis du vil have emerge til at downloade kildekoden, før du fortsætter (f.eks. fordi du ikke vil have internet-forbindelsen åben, mens du kompilerer alle pakkerne) så kan du bruge --fetchonly parametren til emerge, som vil hente alt kildekode for dig.

Kode oversigt 4.2: Hentning af kildekoder

# emerge --fetchonly --emptytree system

Opbygning af systemet

For at starte opbygningsprocessen af system, skal du køre emerge --emptytree system. Dette trin tager forholdsvis lang tid at færdiggøre så find på noget andet at lave end at stirre ind i skærmen.

Kode oversigt 4.3: Opbygning af systemet

# emerge --emptytree system

Igen, hvis du ikke har rørt ved standard CFLAGS- og CXXFLAGS-indstillinger, er brug af --newuse nok.

Du kan nu med sikkerhed ignorere alle advarsler omkring de opdaterede opsætningsfiler (og køre etc-update). Når dit Gentoo system er fuldt installeret og genstartet, læs da vores dokumentation omkring opsætning af filbeskyttelse.

Når opbygningen er færdig, skal du forsætte med Opsætning af kernen.

7. Opsætning af kernen

7.a. Tidszone

Du bliver først nødt til at vælge din tidszone så. at dit system ved hvor det er lokaliseret. Kig efter din tidszone i /usr/share/zoneinfo, og lav derefter en symbolsk henvisning til /etc/localtime ved brug af ln:

Kode oversigt 1.1: At sætte tidszone informationen til GMT

# ln -sf /usr/share/zoneinfo/GMT /etc/localtime

7.b. Installation af kildekoderne

Valg af kerne

Kernen omkring alle distributioner er bygget på Linux-kernen. Det er et lag imellem bruger-programmer og dit systems hardware. Gentoo giver dens brugere flere forskellige mulige kerne-kildekoder. En fuld liste med beskrivelser forefindes i Gentoo Linux kerne vejledning.

MIPS-baserede systemer kan vælge imellem mips-sources (standard kerne-kildekode til MIPS-arkitekturen) og mips-prepatch-sources (præ-udgivelse af kerne-træet).

Vælg din kerne-kildekode og installer den ved at bruge emerge. Selvfølgelig kan du udskifte dit valg af kildekode:

Bemærk: Specielle patches er nødvendige for at få kernen til at virke med Cobalt-servere. cobalt USE-flaget skal være defineret for at fange de rigtigte patches og tilføje dem.

Kode oversigt 2.1: Installation af kerne-kildekode

(Til SGI-maskiner)
# emerge mips-sources

(Til Cobalt-maskiner)
# mkdir -p /etc/portage
# echo "sys-kernel/mips-sources cobalt" >> /etc/portage/package.use
# emerge mips-sources

Når du tager et kig i /usr/src, burde du se en genvej kaldet linux, som peger mod din kerne-kildekode:

Kode oversigt 2.2: Se genvej til kerne-kildekode

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

Hvis det ikke er det (altså at genvejen peger mod en anden kerne-kildekode) skal du ændre genvejen før du fortsætter:

Kode oversigt 2.3: Ændring af genvejen til kerne-kildekode

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

Nu er det tid til at opsætte og kompilere din kernes kildekoderi

7.c. Kerne-samling og -installation

Introduktion

Førhen gik vi igennem den manuelle opsætning af hvordan man opsætter kerne-kildekoderne. I stedet for har vi uploadet et antal forsmagsindstillinger, som du kan basere din opsætning på. Simpelthen klik på den nærmeste valgmulig, der matcher dit system og kerne-version. Du kan også finde andre opsætningsfiler, end dem der er henvist til hernede.

System Kerne-version
SGI IP22 (Indy, Indigo 2, Challenge S) 2.4.29
Cobalt Qube/Raq 2800 2.6.5 2.6.6 2.6.9

Bemærk: Flere eksempler af kerneindstillinger kan blive fundet på Gentoo/MIPS hardware Support-database, som er placeret http://stuartl.longlandclan.hopto.org/gentoo/mips.

Når du har fundet en opsætning, hent den ind i dit kerne-kildefolder, og omdøb den til .config. Fra der, kan du køre make oldconfig til at bringe alt up-to-date og tillade dig at indstille opsætningen før samlingen.

Kode oversigt 3.1: Opsætning af kernen

# cd /usr/src/linux
# cp /path/to/example-config .config
# make oldconfig
(Tast bare ENTER ved hver prompt for at acceptere standarden... vi vil finindstille senere)
# make menuconfig

Kompilering og installation

Nu da din kerne er opsat, er det tid til at kompilere og installere den. Afslut opsætningen (Exit) og starte samlingsprocessen:

Kode oversigt 3.2: Kompilering af kerne

(Til x86-baserede systemer, 2.4 kerne)
# make dep && make bzImage modules modules_install

(Til alle andre systemer, 2.4 kerne)
# make dep && make vmlinux modules modules_install

(Til 2.6 kernen)
# make && make modules_install

Når kernen er færdig med at kompilere, kopier den da over til /boot.

Bemærk: På Cobalt-servere, vil bootloaderen forvente at se en komprimeret kerne-billedfil. Husk at gzip -9 filen når den er i /boot

Kode oversigt 3.3: Installation af kerne

# cp vmlinux /boot/kernel-2.4.24
# cp System.map /boot/System.map-2.4.24
(Cobalt-servere -- Komprimering af kerne-billedfil)
# gzip -9v /boot/kernel-2.4.24

Det er også klogt at kopiere din kerneopsætningsfil til /boot, bare for en sikkerheds skyld :)

Kode oversigt 3.4: Backup af din kerneopsætning

# cp .config /boot/config-2.4.25

7.d. Installation af separate kernemoduler

Opsætning af moduler

Du bør opliste de moduler, som du vil have automatisk hentet, i filerne vist forneden. Du kan også tilføje ekstra valgmuligheder til modulerne, hvis du vil.

  • /etc/modules.autoload.d/kernel-2.4 - kun til kerne 2.4
  • /etc/modules.autoload.d/kernel-2.6 - kun til kerne 2.6
  • /etc/modules.autoload - alle kerner

Derfor, hvis du har et kerne-modul, som du ønsker at hente - som er normalt på både 2.4 og 2.6, så placer den i /etc/modules.autoload. Ellers kan den placeres i dens tilhørende fil.

For at se alle de tilgængelige moduler, kør følgende find-kommando. Glem ikke at udskifte "<kernel version>" med den version af kernen, du lige har kompileret:

Kode oversigt 4.1: Se alle mulige moduler

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

For automatisk at hente f.eks 3c59x.o modulet, skal du redigere den tilhørende fil og skrive modulnavnet i den.

Kode oversigt 4.2: At redigere /etc/modules.autoload.d/kernel-2.4

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

Kode oversigt 4.3: /etc/modules.autoload.d/kernel-2.4 eller kernel-2.6

3c59x

Dette kan også gøres på én gang:

Kode oversigt 4.4: Tilføjelse af modul - på én gang

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

Fortsæt installationen med Opsætning af dit system.

8. Opsætning af dit system

8.a. Informationer om filsystemet

Hvad er fstab?

Under Linux skal alle partitioner, som systemet benytter, være på listen i /etc/fstab. Denne fil indeholder mount-punkterne til disse partitioner (hvor de bliver set i filsystemets struktur), hvordan de skal mountes og med hvilke specielle indstillinger (automatisk eller ej, om brugere kan eller ikke kan mounte dem, osv.).

Oprettelse af /etc/fstab

/etc/fstab benytter en speciel syntaks. Hver linje består af seks felter, adskilt af mellemrum eller tabulatorer (og gerne flere af begge). Hvert felt har sin egen betydning:

  • Det første felt beskriver partitionen (stien til enhedsfilen)
  • Andet felt viser mount-punktet hvor partitionen skal mountes
  • Tredje felt viser hvilket filsystem partitionen benytter
  • Det fjerde felt viser mount-indstilliger, der bliver brugt af mount, når den vil mounte en partition. Da hvert filsystem har sine egne mount-indstillinger, opfordres du til at læse manpagen mount (man mount) for at få et fuldt overblik. Flere mount-indstillinger er adskilt med komma.
  • Femte felt er brugt af dump til bestemme om en partion har brug for at blive dumpet eller ej. Du kan normalt lade dette være 0 (nul).
  • Sjette felt er brugt af fsck til at bestemme rækkefølgen for kontrol af filsystemer, hvis systemet ikke er blevet lukket ordentlig ned. Filsystemet med roden bør være 1, mens resten bør være 2 (eller 0 hvis en kontrol af filsystemet ikke er nødvendig).

Standard-filen /etc/fstab leveret af Gentoo er ikke en valid fstab-fil, så start nano (eller dit foretrukne redigeringsprogram) for at oprette din /etc/fstab:

Kode oversigt 1.1: Åbning af /etc/fstab

# nano -w /etc/fstab

Lad os se på hvordan vi skal lave opsætningen for /boot partitionen. Dette er kun et eksempel, så hvis din arkitektur ikke har brug for en /boot partition (f.eks. PPC), så lad være med at kopiere det ordret.

I vores standardeksempel med x86 partitionering er /boot partitionen /dev/hda1 med ext2 som filsystem. Den bør kontrolleres ved boot, så vi skriver:

Kode oversigt 1.2: Eksempel på linjen med /boot i /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

Nogle brugere ønsker ikke at deres /boot partition bliver automatisk mountet for at forbedre systemets sikkerhed. Disse personer bør udskifte defaults med noauto. Dette betyder at du selv skal mounte denne partition manuelt, hver gang du skal bruge den.

For at forbedre ydelsen vil de fleste brugere tilføje noatime som en mount-indstilling, hvilket vil resultere i et hurtigere system, da tilgangstider ikke bliver registreret (hvilket du normalt ikke har brug for):

Kode oversigt 1.3: En forbedret /boot linje i /etc/fstab

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

Hvis vi forsætter med dette, får vi de tre følgende linjer (for /boot, / og swap-partitionen):

Kode oversigt 1.4: De tre linjer i /etc/fstab

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

For at gøre det færdigt bør du tilføje en definition for /proc, tmpfs (påkrævet) og for dit CD-ROM drev (og selvfølgelig også for andre partitioner og drev, hvis du har det):

Kode oversigt 1.5: Et komplet eksempel på /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

auto får mount til at gætte på filsystemet (anbefalet for flytbare medier, da de kan være skabt med et enkelt ud af mange filsystemer) og user gør det muligt, for andre brugere end root, at mounte CDen.

Brug nu eksemplet ovenfor til at oprette din /etc/fstab. Hvis du er SPARC-bruger, bør du også tilføje den følgende linje til /etc/fstab:

Kode oversigt 1.6: Tilføjelse af filsystemet openprom i /etc/fstab

none        /proc/openprom  openpromfs    defaults      0 0

Dobbelt-tjek din /etc/fstab, gem og afslut for at fortsætte.

8.b. Oplysninger om netværk

Værstnavn, domænenavn etc.

Et af de valg, man som bruger, skal gøre, er at bestemme et navn til sin PC. Dette lader til at være ret let, men mange brugere har problemer med at finde et passende navn til deres Linux PC. For at gøre det kort, så kan du ændre ethvert navn du vælger, senere. For vores skyld kan du kalde dit system tux og dit domæne homenetwork.

Vi bruger disse værdier i de næste eksempler. Først angiver vi værtsnavnet:

Kode oversigt 2.1: Angivelse af værtsnavn

# nano -w /etc/conf.d/hostname
(Indsæt dit værtsnavn i HOSTNAME-variablen)
HOSTNAME="tux"

Herefter angiver vi domænenavn:

Kode oversigt 2.2: Angivelse af domænenavn

# nano -w /etc/conf.d/domainname
(Indsæt domænenavnet i DNSDOMAIN-variablen)
DNSDOMAIN="hjemmenetvaerk"

Hvis du har et NIS-domæne (hvis du ikke ved hvad det er, har du ikke et), skal du også angive det:

Kode oversigt 2.3: Angivelse af NIS-domænenavn

# nano -w /etc/conf.d/domainname
(Indsæt NIS-domænenavnet i NISDOMAIN-variablen)
NISDOMAIN="mit-nisdomaene"

Tilføj nu scriptet domainname til standard runlevel:

Kode oversigt 2.4: Tilføjelse af domainname til standard runlevel

# rc-update add domainname default

Opsætning af dit netværk

Før du får den "Hallo, vi har været igennem det før"-følelse, skal du huske på at den opsætning af netværket du lavede i starten af Gentoo installationen, kun var for installationen. Nu skal du lave den permanente opsætning af dit netværk til dit Gentoo system.

Al netværksinformation er samlet i /etc/conf.d/net. Den benytter en meget ligefrem, men ikke særlig intuitiv, syntaks, hvis du ikke kender til manuel netværksopsætning. Men frygt ikke, vi vil forklare det hele. Et fuldt kommenteret eksempel, som dækker mange forskellige opsætninger, er tilgængeligt i /etc/conf.d/net.example.

DHCP er brugt som standard, og kræver derfor ingen yderligere opsætning.

Hvis du skal opsætte din netværksforbindelse, enten fordi du skal bruge specifikke DHCP-valgmuligheder eller fordu du ikke bruger DHCP overhovedet, åben /etc/conf.d/net med dit favorit redigeringsprogram (nano er brugt i dette eksempel):

Kode oversigt 2.5: Åbning af /etc/conf.d til redigering

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

Du vil se følgende fil:

Kode oversigt 2.6: Standard /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

For at indtaste din egen IP-adresse, netmaske og gateway, skal du indstille både config_eth0 og routes_eth0:

Kode oversigt 2.7: Manuel indstilling af IP-informationer til eth0

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

For at bruge DHCP og tilføje specifikke DHCP-valgmuligheder, definer config_eth0 og dhcp_eth0:

Kode oversigt 4.22: Automatisk optagning af IP-adresse til eth0

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

Læs venligst /etc/conf.d/net.example for en liste af alle mulighederne.

Hvis du har forskellige netværksgrænseflader, gentag ovenstående trin til config_eth1, config_eth2 osv.

Gem nu indstillingerne og afslut for at fortsætte.

Automatisk start af netværk ved opstart

For at aktivere dine netværkenheder ved opstarten, skal du tilføje dem til standard runlevel. Hvis du har PCMCIA-enheder, bør du springe denne sektion over, da PCMCIA-enheder er startet af scriptet PCMCIA init.

Kode oversigt 2.9: Tilføjelse af net.eth0 til standard runlevel

# rc-update add net.eth0 default

Hvis du har flere netværksenheder, skal du oprette tilsvarende net.eth1, net.eth2 etc. initscripts til dem. Du kan bruge ln til det:

Kode oversigt 2.10: Oprettelse af ekstra initscripts

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

Angivelse af netværksinformation

Du skal nu informere Linux om dit netværk. Dette er defineret i /etc/hosts og hjælper med at oversætte værtsnavne til IP-adresser, for værter der ikke er blevet oversat af din navneserver. Hvis f.eks. dit interne netværk består af tre PC'er navngivet jenny (192.168.0.5), benny (192.168.0.6) og tux (192.168.0.7 - dette system) skal du åbne /etc/hosts og indsætte disse værdier:

Kode oversigt 2.11: Åbn /etc/hosts

# nano -w /etc/hosts

Kode oversigt 2.12: Indsættelse af netværksinformation

127.0.0.1     localhost
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny
192.168.0.7   tux.homenetwork tux

Hvis dit system er det eneste (eller navneserveren klarer alle navneoversættelser), er en enkelt linje nok. F.eks., hvis du vil kalde dit system tux:

Kode oversigt 2.13: /etc/hosts for enlige eller fuldt integrerede PC'er

127.0.0.1     localhost tux

Gem og afslut din editor for at afslutte.

Hvis du ikke har PCMCIA, kan du nu fortsætte med Systeminformation. PCMCIA-brugere bør læse det følgende emne om PCMCIA.

Valgfri: Få PCMCIA til at køre

Bemærk: pcmcia-cs er kun tilgængelig til x86, amd64 og ppc platformene.

PCMCIA-brugere bør først installere pcmcia-cs-pakken. Dette er også for brugere, som arbejder med en 2.6-kerne (selvom de ikke bruger PCMCIA-driverne fra denne pakke). USE="-X" er nødvendigt for at sikre at xorg-x11 ikke bliver installeret på dette tidspunkt:

Kode oversigt 2.14: Installation af pcmcia-cs

# USE="-X" emerge pcmcia-cs

Når pcmcia-cs er installeret, så tilføj pcmcia til standard runlevel:

Kode oversigt 2.15: Tilføjelse af pcmcia til standard runlevel

# rc-update add pcmcia default

8.c. Systeminformation

Root-kodeord

Først skal vi sætte root-kodeordet ved at taste:

Kode oversigt 3.1: At sætte root-kodeordet

# passwd

Hvis du vil have at root kan logge ind via en seriel konsol, tilføj tts/0 til /etc/securetty:

Kode oversigt 3.2: Tilføjelse af tts/0 til /etc/securetty

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

Systeminformation

Gentoo bruger /etc/rc.conf til generel system opsætning. Åbn /etc/rc.conf og nyd alle kommentarerne i filen :)

Kode oversigt 3.3: Åbning af /etc/rc.conf

# nano -w /etc/rc.conf

Når du har er færdig med at opsætte /etc/rc.conf, gem og afslut.

Som du kan se, er denne fil kommenteret en del, for at hjælpe dig med opsætningen af de nødvendige variabler. Du kan opsætte dit system til at bruge unicode og definere dit standard-redigeringsprogram og din grafiske loginhåndtering (som f.eks. gdm eller kdm).

Gentoo bruger /etc/conf.d/keymaps for at håndtere tastaturopsætningen. Rediger den til at opsætte dit tastatur.

Kode oversigt 3.4: Åbning af /etc/conf.d/keymaps

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

Vær særlig opmærksom på indstillingen af KEYMAP. Hvis du vælger et forkert KEYMAP, vil du få mærkelige resultater, når du skriver på tastaturet.

Bemærk: Brugere af USB-baserede SPARC systemer og SPARC kloner, kan have brug for at vælge en i386 keymap (som f.eks. "us") i stedet for "sunkeymap". PPC bruger x86-keymaps til de fleste systemer. Bruger, som ønsker at bruge ADB-keymaps ved opstart, skal aktivere ADB-keycode indstillinger i deres kerne og skal sætte en mac/ppc-keymap i /etc/conf.d/keymaps.

Når du er færdig med at opsætte /etc/conf.d/keymaps, gem og afslut.

Gentoo bruger /etc/conf.d/clock til at indstille klokken. Rediger den så den passer til dine behov.

Kode oversigt 3.5: Åbning af /etc/conf.d/clock

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

Hvis din hardware-ur ikke bruger UTC, skal du tilføje CLOCK="local" i filen. Ellers vil du notere tidsforskydelser. Yderligere, Windows forudsætter at dit hardware-ur bruger lokal tid, så hvis du vil dualboote, bør du sætte denne variabel dertil, ellers vil dit ur gå amok.

Når du er færdig med opsætningen af /etc/conf.d/clock, så gem og afslut.

Hvis du ikke installerer Gentoo på IBM PPC64 hardware, fortsæt med Installation af nødvendige systemværktøjer.

Opsætning af konsollen

Bemærk: Den følgende sektion er lavet til IBM PPC64 hardware-platformene.

Hvis du kører Gentoo i en IBM PPC64 hardware og bruger virtuel konsol, skal du afkommentere den rigtige linie i /etc/inittab for at få den virtuelle konsol til at dukke op ved login-prompt.

Kode oversigt 3.6: Aktivering af hvc-understøttelse i /etc/inittab

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

Du bør også tage tiden til at kigge efter om alt er korrekt i /etc/securetty

Du kan nu fortsætte med Installation af nødvendige systemværktøjer.

9. Installation af nødvendige systemværktøjer

9.a. Enhedshåndtering

Hvis du bruger en 2.4-kerne og installerer Gentoo fra stage 3, er der nogen få ting, du skal gøre. Siden Gentoo nu bruger udev som standard, og udev ikke er understøttet af 2.4-kerner, skal du bruge devfsd og fjerne udev.

Kode oversigt 1.1: Installation af devfsd

(For dem der bruger 2.4.x kerner ved en stage 3 installation)
# emerge --unmerge udev
# emerge devfsd

9.b. Systemslogning

Da vi forklarede hvad stage3 var, sagde vi, at den indeholdte alle nødvendige systemsredskaber, hvor vi desvære ikke kan lade brugerne vælge. Vi sagde også, at vi ville installere alle de andre redskaber senere. Tja, så er vi jo kommet til det punkt :)

Det første redskab, du skal tage stilling til, skal muliggøre at du kan logge dit systems aktivitet. Unix og Linux har historisk haft fantastiske muligheder for logning -- hvis du vil, kan du logge absolut alt der sker på dit system, og gemme det i logfiler. Dette sker gennem systemloggeren.

Gentoo giver dig flere system-loggere at vælge imellem. Der er sysklogd, som er det traditionelle sæt af systemlogningsdaemoner (baggrundsprocesser), syslog-ng, en acanceret systemslogger og metalog som er et meget konfigurerbart systemlogningsprogram. Andre kan også være tilgængelige via Portage - vores antal af tilgængelige pakker stiger hver dag.

Hvis du planlægger at bruge sysklogd eller syslog-ng, ville du måske ønske at installere logrotate efter, idet disse systemloggere ikke leverer nogen rotationsmekanisme til log-filerne.

For at installere den system-logger du har valgt, skal du emerge den, og sørge for at den bliver sat ind i din default runlevel ved at bruge rc-update. Følgende eksempel installerer syslog-ng. Selvfølgelig skal du bare sætte navnet på din system-logger ind i stedet for:

Kode oversigt 2.1: Installation af et systemslogningsprogram

# emerge syslog-ng 
# rc-update add syslog-ng default 

9.c. Valgfrit: Cron-daemon

Dernæst har vi cron-daemonen. Selv om den er valgfri og egentlig ikke nødvendig for at dit system fungerer, er det klogt at installere én. Men hvad er en cron-daemon? En cron-daemon kører tidsbestemte kommandoer. Den er meget god at have ved hånden, hvis du skal køre en kommando med jævne mellemrum (for eksempel dagligt, ugentligt, eller hvert måned).

Gentoo giver dig tre forskellige cron-daemoner at vælge imellem: dcron, fcron og vixie-cron. Installation af cron-daemonen minder meget om installationen af systemsloggeren. Men, dcron og fcron kræver en ekstra konfigurations kommando, nemlig crontab /etc/crontab. Hvis du ikke ved hvilken en du skal vælge, så brug vixie-cron.

Vi leverer kun vixie-cron til netværksløse installationer. Hvis du vil have en anden cron-daemon, så vent med at installere den til senere.

Kode oversigt 3.1: Installation af en cron-daemon

 #
emerge vixie-cron 
# 
rc-update add vixie-cron default 
(Kun hvis du har valgt dcron eller fcron)
# crontab /etc/crontab 

9.d. Valgfrit: Filregister

Hvis du vil registere dit system's filer, så du kan finde dem hurtigt med locate-værktøjet, så skal du installere sys-apps/slocate.

Kode oversigt 4.1: Installation af slocate

# emerge slocate

9.e. Filsystemsredskaber

Afhængig af hvilke filsystemer du bruger, skal du installere de relevante filsystemsredskaber (til at tjekke filsystemets integritet, for at lave yderligere filsystemer osv.).

Den følgende liste opregner de redskaber, du skal installere, hvis du bruger et specifikt filsystem:

Filsystem Redskab Installationskommando
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Hvis du bruger EVMS, skal du også installere evms:

Kode oversigt 5.1: Installation af EVMS-redskaber

# emerge evms 

Hvis du ikke behøver nogen yderligere netværksrelaterede redskaber (som f.eks. rp-pppoe eller en dhcp-klient), fortsæt med Opsætning af boot-loader.

9.f. Netværksredskaber

Valgfrit: Installation af en DHCP-klient

Hvis du ønsker at Gentoo automatisk henter en IP-adresse på dit netværksgrænseflade(r), skal du installere dhcpcd (eller en anden DHCP-klient) på dit system. Hvis du ikke gør dette nu, vil du ikke have mulighed for at få forbindelse til Internet efter installationen!

Kode oversigt 6.1: Installation af dhcpcd

# emerge dhcpcd

Valgfrit: Installation af en PPPoE-klient

Hvis du bruger rp-pppoe til at koble op til internettet, så skal du installere den.

Hvis du ikke bruger GRP skal du installere rp-pppoe med følgenede kommando:

Kode oversigt 6.2: Installation af rp-pppoe

# 
USE="-X" emerge rp-pppoe 

USE="-X" er der, for at sikre at X ikke bliver installeret, som en afhængighed (rp-pppoe har grafiske redskaber; hvis du vil bruge disse, kan du rekompilere rp-pppoe senere, eller lade xorg-x11 installere nu -- som tager et godt stykke tid at kompilere).

RAID-værktøj til IBM-hardware

Hvis du bruger SCSI-RAID på et POWER5-baseret system, bør du overveje at installere iprutils, som tillader dig at arbejde med RAID disk-array, få status på diskene i arrayen og opdatere microkoder imellem deres funktioner.

Kode oversigt 6.3: Installation af iprutils

# emerge iprutils

Nu kan du gå videre med Opsætning af boot-loader.

10. Opsætning af boot-loader

10.a. Silicon Graphics maskiner - opsætning af arcboot

Installation af arcboot

Tidligere i denne vejledning, har vi vist dig hvordan man laver en keren, kopiere den til volume header ved at bruge dvhtool. Der er to store mangler i dette system:

  • Den er ikke understøttet på alle SGI-systemer
  • Den kræver en signifikant større volume header

For at starte maskinen, en boot-loader, arcboot var udviklet til dette arbejde. I stedet for at putte kernen direkt ind i volume header, vil vi lade den være /boot (som er på en EXT2/3 partition), og fortælle arcboot (som sidder i volume header i placeringen af kernen) hvor den kan findes. Så vores første trin er at merge nogle værktøjer, vi kan bruge senere...

Kode oversigt 1.1: Installation af krævede værktøjer

# emerge dvhtool arcboot

Det skulle have installeret to værktøjere, arcboot, som er placeret i volume header og hente kerner til os, og dvhtool, som hjælper os med at putte arcboot ind i volume header.

Den magiske binære fil vi vil have, gemmer sig i /usr/lib/arcboot - på IP22-systemer (Indy, Indigo 2, Challenge S), vil den være kaldet arcboot.ip22. På andre systemer vil den være lige sådan. Vi kopierer først denne file ind i volume header.

Kode oversigt 1.2: Installation af arcboot ind til volume header

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

Vi vil så verificere tilgængeligheden af filen i volume headeren.

Kode oversigt 1.3: Tjekke om arcboot er ok

# 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
#

Bemærk: Du vil notere at i mit tilfælde, har jeg to gamle kerner, som sidder der, linux og newlinux. Det er tømmermænd fra tidligere vi begyndte med at bruge arcboot. Deres eksistens gør ikke noget, så længe at arcboot er tilgængeligt, er alt fint.

Opsætning af arcboot

Hvis du nogensinde har opsat en Linux Loader (lilo) før, vil du finde ud af at arcboot har lignende syntaks i dens opsætningsfil. Pas dog på; arcboot forventer at opsætningsfilen eksisterer på en EXT2/3-partition, som /etc/arcboot.conf. Den letteste vej er at sørge for at /boot er en EXT2/3-partition og at der en fil kaldet arcboot.conf inden i /boot/etc-folderen. Et eksempel-opsætning kan blive fundet i /etc/arcbook.conf.sample

Kode oversigt 1.4: Indsætte arcboot.conf i dens placering

(Oprette /boot/etc folderen)
# mkdir /boot/etc

(Indsætte vores opsætning ind i mål-folderen)
# cp /etc/arcboot.conf.sample /boot/etc/arcboot.conf
 	 
(Oprette et symlink tilbage til /etc)
# ln -s /boot/etc/arcboot.conf /etc/arcboot.conf
  	 
(... og et symlink i /boot, som peger til sig selv)
# (cd /boot; ln -s . boot)

Du kan så redigere /etc/arcboot.conf til dit eget ønske. Personligt foretrækker jeg at opsæætte to kerne-billedfiler: new, en frisksamlet billedfil, som måske virker; og working, en prøvet sikker kerne-billedfil. Min arcboot.conf ser ud sådan omkring dette.

Kode oversigt 1.5: Eksempel af arcboot.conf

# arcboot.conf
#
# copyright 2002 Guido Guenther <agx@sigxcpu.org>
#
label=working
        image=/vmlinux
        append="root=/dev/sda3"

# backup version
label=new
        image=/vmlinux-new
        append="root=/dev/sda3"

Når den er sat op, skulle der kun være få ting, som skal opsættes indeni SGI PROM for at få magien til at virke. Dette er dækket i, ikke næste sektion (det er til Cobalt-servere), men den efterfølgende sektion Genstart af systemet.

10.b. Cobalt MicroServere - opsætning af CoLo

Installation af CoLo

På Cobalt-servere har disse maskiner en meget mindre egnet firmware installeret på chippen. Cobalt BOOTROM er primitiv ved at sammenligne den med SGI PROMen, og har et antal seriøse begrænsninger.

  • Der er en 675 KB begrænsning på kerner. Den nuværende størrelse af Linux 2.4 gør det næsten umuligt at lave en kerne på den størrelse. Linux 2.6 er helt ude af denne diskussion.
  • 64-bit kerneer er ikke understøttet af den normale firmware (selvom disse er meget eksperimental på Cobalt-maskiner på dette tidspunkt)
  • Skallen er meget primitiv

For at overkomme disse begrænsninger, en alternativ firmware, kaldet CoLo (Cobalt Loader) er blevet udviklet. Dette er en BOOTROM-billedfil, som kan enten blive flashed ind i chippen på Cobalt-serveren eller hentet igennem den eksisterende firmware.

Bemærk: Denne vejledning vil tage dig igennem opsætningen af CoLo, så den kan blive hentet igennem den normale firmware. Dette er ikke kun sikkert, det er også den anbefalede metode at opsætte CoLo.

Advarsel: Du kan, hvis du ønsker, flashe den ind i serveren, og totalt erstatte den originale firmware - dog, du er helt på din egen på det eventyr. Skulle noget gå galt, bliver du nødt til at fysisk fjerne BOOTROM og reprogrammere den selv med den normale firmware. Hvis du ikke er sikker på at gøre dette - så flash IKKE din maskine. Vi tager ikke noget ansvar for hvad der sker, hvis du ignorerer denne anbefaling.

Okay, med alle advarselskiltene væk, kan vi fortsætte med at installere CoLo. Start først ved emerge pakken.

Kode oversigt 2.1: Emerge af colo

# emerge colo

Med den installeret (Jeg håber du læser de beskeder ;-) bør du være klar til at kigge inden i /usr/lib/colo-folderen for at finde to filer, colo-chain.elf: "kernen" til den normale firmware, som kan hentes, og colo-rom-image.bin: en ROM-billedfil til at flashe ind i BOOTROM. Vi starter med at mounte /boot og dumpe en komprimeret kopi af colo-chain.elf i /boot, hvor systemet forventer det.

Kode oversigt 2.2: Putte CoLo i dens plads

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

Opsætning af CoLo

Når nu systemet starter op for første gang, vil den hente CoLo, som vil spytte en menu på bagside-LCDen. Den første valgmulighed (og standard som er fortsat efter ca. 5 sekunder) er at starte fra harddisken. Systemet vil så prøve at mounte den første Linux partition den finder, og køre scriptet default.colo. Syntaksen er fuldt dokumenteret i CoLo dokumentationen (tag et kig på /usr/share/doc/colo-X.YY/README.shell.gz - hvor X.YY er versionen installeret), det er meget simpelt.

Bemærk: Bare et tip: når du installerer kerner, vil jeg normalt oprette to kerne-billedfiler, kernel.gz.fungerende -- en kendt fungerende kerne, og kernel.gz.ny -- en kerne, som lige er blevet bygget. Du kan enten bruge symlinsk til at pege på de "nye" og "fungerende" kerner, eller bare omdøbe kerne-billedfilerne.

Kode oversigt 2.3: En basis default.colo

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

Bemærk: CoLo nægter at hente et script, der ikke starter med #:CoLo:# linien. Tænk på det som værende tilsvarende til at sige #!/bin/sh i shell-scripts.

Det er også muligt at spørge et spørgsmål, som fra hvilken kerne & opsætning, som du vil ønske at starte, med en standard timeout. Det er opsætningen, som jeg vil bruge på min Cobalt-server:

Vigtigt: Noter venligst at hvis du bruger CoLo v1.12 eller v1.13, at du skal bruge menu-kommandoen. Det følgende eksempel vil ikke virke med v1.11.

Vigtigt: menu-kommandoen er blevet erstattet af select-kommandoen i CoLo v1.14. Hvis du har installeret en nyere version selv, tag et kig i menu.colo i examples-underfolderen af CoLo-distributionen.

Kode oversigt 2.4: Menu-baseret opsætning

#:CoLo:#
  	 
lcd "Mounting hda1"
mount hda1
menu "Which Kernel?" 50 Working working New new
lcd "Loading Linux" {menu-option}
load /kernel.gz.{menu-option}
lcd "Booting..."
execute root=/dev/hda5 ro console=ttyS0,115200
boot

Det ovenstående script spørger brugeren, hvilken kerne han/hun ville ønske skulle starte (enten New eller Working), så henter den vmlinux.gz.new eller vmlinux.gz.working afhængigt af valget. Hvis et valg ikke er gjort indenfor 5 sekunder (50/10ende af et sekund) vil den starte første valgmulighed.

10.c. Opsætning til den serielle konsol

Okay, Linux installationen, som det står nu, ville starte fint, men forudsætter at du er logget ind igennem en fysisk terminal. På Cobalt-maskiner, dette er meget dårligt - det er ikke sådan en ting som en fysisk terminal.

Bemærk: Dem, der har luksus af at have understøttet framebuffer kan springe denne sektion over, hvis de ønsker.

Først, hent et redigeringsprogram og hack /etc/inittab. Nede i filen, vil du se noget som dette :

Kode oversigt 3.1: inittab opsætning

# SERIAL CONSOLE
#c0:12345:respawn:/sbin/agetty 9600 ttyS0 vt102
  	 
# TERMINALS
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
  	 
# What to do at the "Three Finger Salute".
ca:12345:ctrlaltdel:/sbin/shutdown -r now

Først udkommenter c0 linien. Som standard, er den brug til terminaler med en baudrate på 9600 bps. På Cobalt-servers, vil du ønske at ændre dette til 115200 for at matche baudraten besluttet af BOOT ROM. Dette er hvordan sektionen ser ud på min maskine. På en hovedløs maskine (f.eks. Cobalt-servere), vil jeg også anbefale at udkommentere de lokale terminale linier (c1 til c6), da disse har tendensen til at opføre sig dårligt, når de ikke kan åbne /dev/ttyX.

Kode oversigt 3.2: Eksempel af et udsnit fra inittab

# SERIAL CONSOLE
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102
  	 
# TERMINALS -- These are useless on a headless 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

Nu til sidst... skal vi fortælle systemet, at den lokale serielle prot kan blive stolet på som en sikker terminal. Filen vi skal stikke i er /etc/securetty. Den indeholder en liste af terminaler, som systemet stoler på. Vi putter bare to linier mere ind, som tillader den serielle linie til at blive brugt til root login.

Kode oversigt 3.3: Tilladelse af root-login på en seriel konsol

(/dev/ttyS0 - det traditionelle navn til den første seriellle port)
# echo 'ttyS0' >> /etc/securetty
  	 
(Derefter, Linux kalder dette /dev/tts/0 -- så vi tilføjer også
dette)
# echo 'tts/0' >> /etc/securetty

10.d. Genstart af systemet

Afslut det chrooted miljø og afmount alle mountede partitioner. Indtast så den magiske kommando, du har ventet på: reboot.

Kode oversigt 4.1: Afslutning af chroot og afmount af partitioner samt genstart

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

Bemærk: Cobalt brugere: Resten af denne sektion dækker opsætningen af SGI PROM, så at den starter arcboot fra disken og henter Linux. Dette er ikke brugbart til opsætning af Cobalt servere. I stedet for, er alt dit arbejder færdig - der er ikke nogen opsætning som skal gøres for at starte op første gang, så du kan springe til næste sektion: Afslutte din Gentoo-installation

10.e. Finindstilling af SGI PROM

Når du har genstartet, gå ind i System Maintenance Menu og vælg Enter Command Monitor (5). Hvis du vil teste din nye Gentoo-installation, kan du bare køre boot -f <kernel name>. For at få dit system til at permanent starte ind i Gentoo-installation, skal du sætte nogle variabler i SGI-PROMen:

Kode oversigt 5.1: Configuring the PROM to Boot 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.

(<root device> = Gentoos root-partition, f.eks. /dev/sda3)
>> setenv OSLoadPartition <root device>

(For at vise en liste over tilgængelige kerner, tast "ls")
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>

(Erklær kerne-erklæringerne, som du ønsker at tilføje)
>> setenv OSLoadOptions <kernel parameters>

(Leverer placeringen af volume header)
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)

(Automatisk starte Gentoo)
>> setenv AutoLoad Yes

(Indstilling af tidszonen)
>> setenv TimeZone EST5EDT

(Brug den serielle konsol - grafisk adapterbrugere bør have "g" i stedet for "d1" (ettal))
>> setenv console d1

Nu er du klar til at nyde Gentoo! Start ind i din Gentoo-installation og afslut med Afslutte din Gentoo-installation.

11. Afslutning af din Gentoo installation

11.a. Brugeradministation

Tilføjelse af en dagligdagsbruger

At arbejde som root på et Unix/Linux system er farligt og bør undgås så vidt som muligt. Derfor anbefales det meget at tilføje en dagligdagsbruger.

Grupperne, som en bruger er medlem af, definerer hvilke aktiviteter, brugeren kan udføre. Den følgende tabel viser et antal vigtige grupper, som du måske ville bruge:

Gruppe Beskrivelse
audio få adgang til lydenheder
cdrom få direkte adgang til optiske enheder
floppy få direkte adgang til diskettedrev
games få adgang til at spille spil
usb få adgang til USB-enheder
video få adgang til video-optagelseshardware og udføre hardware acceleration
wheel få adgang til at bruge su

For eksempel, for at tilføje en bruger med navnet jens, som er medlem af wheel-gruppen, users-gruppen og audio-gruppen, log ind som root først (kun root kan oprette brugere) og kør useradd:

Kode oversigt 1.1: Tilføjelse af en dagligdagsbruger

Login: root
Password: (Dit root-kodeord)
# useradd jens -m -G users,wheel,audio -s /bin/bash
# passwd jens
Password: (Indtast kodeordet for jens)
Re-enter password: (Indtast kodeordet igen for at bekræfte det)

Hvis en bruger nogensinde får brug for at lave nogle opgaver, som root, kan denne bruge su - for midlertidigt at få root rettigheder. En anden måde er at bruge sudo-pakken, som hvis opsat korrekt, er meget sikker.

12. Hvad kan jeg gøre efter dette?

12.a. Dokumentation

Tillykke! Du har nu et fungerende Gentoo system. Men hvad skal man nu gøre efter dette? Hvad er mulighederne nu? Hvad burde man udforske først? Gentoo giver dens brugere en masse muligheder, og har derfor en masse dokumenterede (og mindre dokumenterede) egenskaber.

Du burde virkeligt tage et kig på den næste del af Gentoo-håndbogen, der hedder Arbejde med Gentoo, som forklarer hvordan du holder dit software opdateret, hvordan du installerer mere software, hvad USE-flag er, hvordan dit Gentoo Init-system virker osv.

Hvis du er interesseret i et optimeret system til brug som arbejdsplads/desktop, eller vil lære hvordan du opsætter dit system til at blive til en fuldt fungerende arbejdsplads, se da i vores Gentoo-arbejdspladsressourcer. Yderligere, vil du måske også ønske at bruge vores localization guide for at gøre dit system lidt mere hjemligt.

Vi har også et dokument omkring Gentoo Sikkerhed(dog på engelsk) som er værd at læse.

For at få en fuld liste over vores dokumentation, se vores side Dokumentationsressourcer.

12.b. Gentoo Online

Du er selvfølgelig altid velkommen på vores Gentoo Forummer eller en af de mange Gentoo IRC-kanaler.

Vi har også en hel del mail-lister åbne til alle vores brugere. Informationer om hvordan man tilføjer sig, fortælles på den side.

Vi vil nu lukke for hanen og lade dig nyde din installation :)

B. Arbejde med Gentoo

1. En Introduktion til Portage

1.a. Velkommen til Portage

Portage er nok Gentoo's mest fremtrædende innovation i softwarehåndtering. Med dens fleksibilitet og enorme mængder af egenskaber, er den ofte set som det bedste softwarehåndteringsværktøj til Linux.

Portage er fuldstændigt skrevet i Python og Bash og er derfor fuldstændig visuelle for brugere, idet begge er scriptsprog.

De fleste brugere vil arbejde med Portage igennem emerge-værktøjet. Dette kapitel er ikke ment til at duplikere informationer omkring emerge man-sider. For en komplet gennemgang af emerges muligheder, læs venligst man-siderne:

Kode oversigt 1.1: Læsning af emerge man-sider

$ man emerge

3.b. Portage-træet

Ebuilds

Når vi taler om pakker, mener vi ofte softwaretitler, som er tilgængelige for Gentoo-brugere igennem Portage-træet. Portage-træet er en samling af ebuilds, filer som indeholder informationer Portage behøver for at vedligeholde software (installation, søgning, forespørgsel ...). Disse ebuilds er placeret i /usr/portage som standard.

Når Portage spørger efter om at udføre aktivititer for softwaretitlerne, vil den bruge ebuilds på dit system som en base. Det er derfor vigtigt at du regulært opdaterer ebuilds på dit system, så Portage ved noget om de nye software-, sikkerheds-opdateringer osv.

Opdatering af Portage

Portage-træet er typisk opdateret ved brug af rsync, et hurtigt udvidbar filoverførselsværktøj. Opdatering er meget simpelt, idet emerge-kommandoen leverer et værktøj til rsync:

Kode oversigt 2.1: Opdatering af Portage-træet

# emerge --sync

Hvis du ikke har mulighed for at rsync'e, fordi du har firewall-forhindringer, kan du stadigvæk opdatere dit Portage-træ ved brug af vores daglig generet Portage-træ snapshots. emerge-webrsync-værktøjet fanger automatisk og installerer de sidste nye snapshots på dit system:

Kode oversigt 2.2: Kørsel af emerge-webrsync

# emerge-webrsync

1.c. Vedligeholdelse af software

Søgning efter software

For at søge igennem Portage-træet efter softwaretitler, kan du bruge emerges indbyggede søgemuligheder. Som standard, vil emerge --search returnere navne på pakker hvor titlen matcher (enten fuldt eller delvis) det givne søge-term.

F.eks., for at søge efter alle pakker, som har "pdf" i deres navn:

Kode oversigt 3.1: Søgning af pdf-navngivne pakker

$ emerge --search pdf

Hvis du også vil søge igennem beskrivelserne, kan du bruge --searchdesc (eller -S) muligheden:

Kode oversigt 3.2: Søgning af pdf-relaterede pakker

$ emerge --searchdesc pdf

Når du kigger på outputtet, vil du notere at den giver dig en del informationer. Disse felter er klart markeret, så vi vil ikke gå længere ind i deres betydninger:

Kode oversigt 3.3: Eksempel på `emerge --search` output

 *  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

Installation af software

Når du har fundet en softwaretitel, som du kan lide, kan du nemt installere den ved brug af emerge: tilføj blot pakkenavnet. F.eks. for at installere gnumeric:

Kode oversigt 3.4: Installation af gnumeric

# emerge gnumeric

Siden mange programmer afhænger af hinanden, vil et forsøg på at installere en specifik softwarepakke evt. resultere i installation af en del afhængigheder. Men bare roligt, Portage håndterer også afhængigheder. Hvis du vil finde ud af hvad Portage ville installere, når du spørger den om at installere en specifik pakke, tilføj --pretend muligheden. F.eks.:

Kode oversigt 3.5: At lade som du bygger gnumeric

# emerge --pretend gnumeric

Når du beder Portage om at installere en pakke, vil den hente de nødvendige kildekoder fra Internet (hvis nødvendigt) og gemme dem, som standard, i /usr/portage/distfiles. Efter dette, vil den pakke ud, bygge og installere pakken. Hvis du vil have Portage til at kun hente kildekoderne, uden af installere dem, tilføj --fetchonly valgmuligheden til emerge kommandoen:

Kode oversigt 3.6: Hentning af kildekode til gnumeric

# emerge --fetchonly gnumeric

Finding af installeret pakkedokumentation

Mange pakker kommer med deres egen dokumentation. Nogengange finder doc USE-flaget ud af om pakkedokumentation bør blive installereret eller ej. Du kan tjekke eksistensen af doc USE-flag med emerge -vp <package name> kommandoen.

Kode oversigt 3.7: Tjekke eksistensen af et doc USE-flag

(alsa-lib er kun et eksempel selvfølgelig.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

Du kan aktivere eller deaktivere doc USE-flaget enten globalt i /etc/make.conf-filen eller pr. pakke i /etc/portage/package.use-filen. USE-Flag-kapitlet dækker dette aspekt i detaljer.

Når pakken er installeret, er dens dokumentation generelt fundet i en underfolder navngivet efter pakken under /usr/share/doc-folderen. Du kan også vise en liste over installerede filer med equery-værktøjet, som er en del af app-portage/gentoolkit pakken.

Kode oversigt 3.8: Lokalisering af pakkedokumentation

# 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
	 
(Alternativt, brug equery for at finde interessante filer:)
# 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 fraklippet)

Fjernelse af software

Når du ønsker at fjerne en softwarepakke fra dit system, brug emerge --unmerge. Dette vil fortælle Portage at fjerne alle filer installeret af denne pakke på dit system undtagen de opsætningsfiler, for dette program, hvis du har ændret dem efter installationen. Ved at efterlade opsætningsfilerne, tillader dig at fortsætte med arbejde med pakken, hvis du tænker på at installere den igen.

Dog, en stor advarsel til dette: Portage tjekker ikke om at en pakke, som du ønsker at fjerne, er krævet af en anden pakke. Den vil dog advare dig, når du ønsker at fjerne en vigtig pakke, som vil ødelægge dit system, hvis du afinstallerer denne.

Kode oversigt 3.9: Fjernelse af gnumeric fra systemet

# emerge --unmerge gnumeric

For at fjerne en pakke fra dit system, vil afhængighederne til denne pakke, som var automatisk installeret når du installerede software, stadigvæk være der. For at få Portage til at finde alle afhængigheder, som nu kan fjernes, brug emerges --depclean funktion. Vi vil tale om dette senere.

Opdatering af dit system

For at holde dit system i perfekt form (og ikke at nævne installere de sidste nye sikkerhedsopdateringer), skal du opdatere dit system jævnligt. Siden Portage kun tjekker ebuilds fra dit Portage-træ, skal du først opdatere dit Portage-træ. Når Portage-træet er opdateret, kan du opdatere dit system med emerge --update world:

Kode oversigt 3.10: Opdatering af dit system

# emerge --update world

Portage vil så søge efter en nyere version af de programmer, som du har installeret. Dog, den vil kun verificere de versioner af programmerne, som du har specifikt installeret, ikke afhængighederne. Hvis du vil opdatere enhver pakke på dit system, tilføj --deep muligheden:

Kode oversigt 3.11: Opdatering af hele dit system

# emerge --update --deep world

Idet sikkerhedsopdateringer også sker til pakker, som du ikke har installeret selv på dit system (men er hentet via afhængigheder fra andre programmer), er det anbefalet at køre denne kommando fra tid til anden.

Hvis du har ændret nogen af dine USE-flag på det sidste, bør du også tilføje --newuse. Portage vil så verificere om ændringerne kræver installationen af nye pakker eller gensamling af eksisterende:

Kode oversigt 3.12: Udførsel af fuldstændig opdatering

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

Metapakker

Nogle pakker i Portage-træet har ingen reel indhold, men er brugt til at installere en samling af pakker. F.eks. vil kde-pakken installere et komplet KDE-miljø på dit system ved at installere forskellige KDE-relaterede pakker, samt afhængigheder.

Hvis du vil fjerne sådan en pakke fra dit system, vil en kørsel af emerge --unmerge på pakken ikke have megen effekt, idet afhængighederne fortsat bliver på systemet.

Portage har en funktionalitet for at fjerne hjemløse afhængigheder, men siden tilgængeligheden af software er dynamisk afhængig, skal du først opdatere dit system fuldstændigt, inklusive de ny ændringer, som du tilføjede ved at ændre USE-flag. Efter dette, kan du køre emerge --depclean for at fjerne hjemløse afhængigheder. Når dette er gjort, skal du genbygge de programmer, som var dynamisk linket til de nu fjernede softwaretitler, men ikke kræves af nogen længere.

Alt dette er håndteret af de følgende tre kommandoer:

Kode oversigt 3.13: Fjernelse af hjemløse afhængigheder

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

revdep-rebuild er leveret af gentoolkit pakken; glem ikke at emerge den først:

Kode oversigt 3.14: Installation af gentoolkit pakken

# emerge gentoolkit

1.d. Når Portage klager...

Om SLOTs, virtuals, brancher, arkitekturer og profiler

Som vi har sagt før, er Portage ekstremt kraftfuld og understøtter mange egenskaber, som andre softwarehåndteringsværktøjer mangler. For at forstå dette, forklarer vi nogle få aspekter af Portage, uden at gå i detaljer.

Med Portage kan forskellige versioner af en pakke eksistere samtidigt på et system. Imens andre distributioner har tendens til at navngive deres pakker efter disse versioner (som freetype og freetype2) bruger Portage en teknologi kaldet SLOTs. En ebuild erklærer en specifik SLOT for dens version. Ebuilds med forskellige SLOTs kan eksistere samtidigt på samme system. F.eks. freetype-pakken har ebuilds med SLOT="1" og SLOT="2".

Der er også pakker, som leverer samme funktionalitet, men er implementeret forskelligt. F.eks. metalogd, sysklogd og syslog-ng er alle systemlogningsprogrammer. Programmerne som stoler på tilgængeligheden af en "systemlogger" kan ikke afhænge af, f.eks. metalogd, idet den ene systemlogger er lige så god som den anden. Portage tillader for virtuals: hver systemlogger leverer virtual/syslog, så programmer kan afhænge af virtual/syslog.

Software i Portage-træet kan være placeret i forskellige brancher. Som udgangspunkt accepterer dit system kun pakker, som Gentoo mener er stabile. De fleste nye softwaretitler, når leveret, er tilføjet til test-branchen, hvilket betyder at flere tests skal udføres før den bliver markeret som stabil. Selvom du kan se ebuilds for disse softwaretitler i Portage-træet, vil Portage ikke opdatere dem, før de er placeret i den stabile branche.

Noget software er kun tilgængelig for få arktitekturer. Eller hvis softwaren ikke virker på andre arktitekturer, eller den kræver flere tests, eller en udvikler som har leveret softwaren til Portage-træet ikke kan verificere at den virker på andre arktitekturer.

Hver Gentoo installation lever af en specifik profile som indeholder, udover andre informationer, en liste over pakker, som er krævet for at systemet kan funktionere normalt.

Blokerede pakker

Kode oversigt 4.1: Portage-advarsel om blokerede pakker (med --pretend)

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

Kode oversigt 4.2: Portage-advarsel om blokerede packages (uden --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.

Ebuilds indeholder specifikke felter, som informerer Portage om dens afhængigheder. Det er to mulige afhængigheder: bygge-afhængigheder, erklæret i DEPEND og kørsel-afhængigheder, erklæret i RDEPEND. Når en af disse afhængigheder præcist markerer en pakke eller virtual som ikke værende kompatibel, trigger den en blokering.

For at ordne en blokade, kan du vælge at ikke installere pakken eller afinstallere den pakke der skaber konflikten først. I det givne eksempel, kan du vælge ikke at installere postfix eller at fjerne ssmtp først.

Maskerede pakker

Kode oversigt 4.3: Portage-advarsel om maskerede pakker

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

Kode oversigt 4.4: Portage-advarsel om maskerede pakker

 !!! 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)

Når du vil installere en pakke, som ikke er tilgængelig på dit system, vil du modtage denne maskerings-fejl. Du bør prøve at installere et andet program, som er tilgængelig til dit system eller vente indtil pakken er tilgængelig. Der er altid en grund til at en pakke er markeret:

  • ~arch nøgleordet betyder at programmet ikke er testet tilstrækkeligt for at blive markeret som stabil. Vente nogle date eller uger og prøv igen.
  • -arch nøgleordet eller -* nøgleordet betyder at programmet ikke virker til din arktitektur. Hvis du tror at denne pakke virker, placerer en fejlrapport i vores bugzilla hjemmeside.
  • manglende nøgleord betyder at programmet ikke er testet på arkitekturen endnu. Spørg arktitektur-porting-teamet for at teste denne pakke eller test den for dem og rapporter dine resultater til bugzilla hjemmesiden.
  • package.mask betyder at en pakke er fundet korrupt, ustabil eller værre og er med vilje markeret som brug-ikke-denne-pakke.
  • profile betyder at pakken ikke er fundet mulig til din profil. Programmet kan ødelægge dit system, hvis du installerer denne eller den er bare ikke kompatibel med den profil du bruger.

Manglende afhængigheder

Kode oversigt 4.5: Portage-advarsel om en manglende afhængighed

 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.

Programmet, som du prøver at installere, afhængiger af en anden pakke, som ikke er tilgængelig på dit system. Tjek venligst bugzilla hvis dette problem er kendt og ikke, så rapporter denne. Medmindre du blander brancher, skulle dette ikke fremkomme og er derfor en fejl.

Flertydige ebuild navne

Kode oversigt 4.6: Portage-advarsel om flertydige ebuild navne

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

	     dev-libs/aterm
	     x11-terms/aterm

Programmet, som du prøver at installere, har et navn, som har flere end en type pakke. Du skal også supplere kategori-navnet. Portage vil informere dig om mulige pakker at vælge imellem.

Cirkulære afhængigheder

Kode oversigt 4.7: Portage-advarsel om cirkulære afhængigheder

 !!! 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

To (eller flere) pakker, som du prøver at installere, afhængiger af hinanden og kan derfor ikke blive installeret. Dette er med stor sandsynlighed en fejl i Portage-træet. Prøv venligst at resynce efter et stykke tid og prøv igen. Du kan også tjekke bugzilla, hvis problemet er kendt, ellers rapportere denne.

Hentning lykkedes ikke

Kode oversigt 4.8: Portage-advarsel om at hentning ikke lykkedes

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

Portage var ikke i stand til at hente kildekoderne til det givne program og vil derfor prøve at installere de andre programmer (hvis muligt). Denne fejl kan være pga. af filspejlet ikke var synkroniseret korrekt eller fordi at ebuild'en peger på et inkorrekt sted. Serveren hvorpå kildekoderne ligger kan også være nede af en grund.

Prøv igen efter en time og se om fejlen stadigvæk er der.

System-profil-beskyttelse

Kode oversigt 4.9: Portage-advarsel om en profil-beskyttede pakke

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

Du har efterspurgt at få fjernet en pakke, som er dit systems kernepakker. Den er placeret i din profil som krævet, og derfor må den ikke fjernes fra dit system.

2. USE-flag

2.a. Hvad er USE-flag?

Ideerne bag ved USE-flag

Når du installerer Gentoo (eller enhver anden distribution, eller endda operativ-system for at nævne det) foretager du nogle valg, afhængigt af miljøet du arbejder med. En opsætning af en server er forskellig fra en opsætning af en arbejdsstation. En spil-arbejdsstation er forskellig fra en 3D-gengivelse-arbejdsstation.

Det er ikke kun rigtigt for at vælge de pakker, som du vil installere, men også hvilke egenskaber en specifik pakke bør understøtte. Hvis du ikke behøver OpenGL, hvorfor skulle du interessere dig for at installere OpenGL og bygge OpenGL-understøttelse til de fleste af vores pakker? Hvis du ikke vil bruge KDE, hvorfor vi du interessere dig for at kompilere pakker med KDE-understøttelse, hvis disse pakker virker fejlfrit uden?

For at hjælpe brugere med at beslutte, hvad man bør installere/aktivere eller ikke, vil vi få brugeren til at specificere sit miljø på en nem måde. Dette tvinger brugeren til at beslutte, hvad han virkelig vil have og letgør processen for Portage, vores pakkebehandlingssystem, for at lave hjælpsomme beslutninger.

Definition af et USE-flag

Tag et skridt ind i USE-flag verdenen. Sådan et flag er et nøgleord, der udtrykker understøttelse og afhængighedsinformationer til sådan et koncept. Hvis du definerer et specifikt USE-flag, vil Portage vide om, at du vil have understøttelse for dette valgte nøgleord. Selvfølgelig vil dette også ændre afhængighedsinformationerne for en pakke.

Lad os tage et kig på et specifikt eksempel: kde-nøgleordet. Hvis du ikke har dette nøgleord i dine USE-variablerne, vil alle pakker, som har valgfri KDE-understøttelse, blive kompileret uden KDE-understøttelse. Alle pakker, som har valgfrie KDE-afhængigheder, vil blive installeret uden at installere KDE-biblioteker (som en afhængighed). Hvis du har defineret kde-nøgleordet, vælg da de pakker, som vil være kompileret med KDE-understøttelse, og KDE-libs vil blive installeret, som en afhængighed.

Ved at definere nøgleordene korrekt, vil du modtage et system, som er skræddersyet specifikt til dine behov.

Hvilke USE-flag eksisterer?

Der er to typer USE-flag: globale og lokale USE-flag.

  • Et globalt USE-flag er brugt af en del pakker, over hele systemet. Dette er hvad de fleste folk forstår som USE-flag.
  • Et lokalt USE-flag er brugt af en enkelt pakke for at lave pakke-specifikke beslutninger.

En liste over tilgængelige globale USE-flag, kan blive fundet online eller lokalt i /usr/portage/profiles/use.desc. Et kort (meget ufuldendt) udsnit:

Kode oversigt 1.1: Et kort udsnit af tilgængelige USE-flag

gtk     - Tilføjer understøttelse til x11-libs/gtk+ (GIMP-værktøjskassen)
gtk2    - Brug af gtk+-2.0.0 i stedet for gtk+-1.2 i nogle situationer, hvor programmet undersøtter begge.
gtkhtml - Tilføjer understøttelse til gnome-extra/gtkhtml
guile   - Tilføjer understøttelse til dev-util/guile (interpreter til Scheme)
icc     - Brug af Intels C++ Compiler, hvis pakken understøtter det
icc-pgo - Aktivering af 'PGO data generation' eller brug den ved brug af icc.
imap    - Tilføjer understøttelse til IMAP

En liste over lokale mulige USE-flag kan blive fundet lokalt i /usr/portage/profiles/use.local.desc.

2.b. Brug af USE-flag

Erklær permanente USE-flag

I håbet af at du er overbevist om vigtigheden af USE-flag, vil vi nu informere dig om, hvordan man erklærer USE-flag.

Som tidligere nævnt, er alle USE-flags erklæret inde i USE-variabelen. For at gøre det nemt for brugere at søge og vælge USE-flag, har vi allerede leveret en standard USE-indstilling. Denne indstilling er en samling af USE-flag, som vi mener er de mest brugte af Gentoo brugere. Denne standard-indstilling er erklæret i make.defaults fil delen af din profil.

Den profil dit system lytter til bliver peget på af /etc/make.profile symlinket. Hver profil virker ovenpå en anden større profil, slutresultatet er derfor summen af alle profilerne. Den øverste profil er base profilen (/usr/portage/profiles/base).

Lad os kigge på standard opsætningen:

Kode oversigt 2.1: Akkumuleret /usr/portage/profiles/default-linux/x86/2004.3/make.defaults USE variabler

(Dette eksempel er summen af opsætningen i base, default-linux,
default-linux/x86 og default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk gtk2 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"

Som du kan se, indeholder denne variabel allerede en hel del nøgleord. Du skal ikke ændre noget i make.defaults-filen for at skræddersy USE-variabelen til dine behov: ændringer i denne fil vil blive fjernet, når du opdaterer Portage!

For at ændre denne standard-indstilling, skal du tilføje eller fjerne nøgleord til USE-variabelen. Dette er gjort globalt ved at definere USE-variabelen i /etc/make.conf. Dette er variabelen, som du kan tilføje ekstra USE-flag, som du kræver, eller fjerne de USE-flag, som du ikke vil bruge. Sidstnævnte er gjort ved at foranstille nøgleordet med et minus-tegn ("-").

F.eks. for at fjerne understøttelse til KDE og QT, men tilføje understøttelse til ldap, følgende USE kan blive defineret i /etc/make.conf:

Kode oversigt 2.2: Et eksempel på en USE-opsætning /etc/make.conf

USE="-kde -qt ldap"

Erklæringer af USE-flag til individuelle pakker

Nogen gange ønsker du at erklære specifikke USE-flag til et af (eller flere) programmerne, men ikke i hele systemet. For at gøre dette, skal du oprette /etc/portage-folderen (hvis den ikke allerede eksisterer) og redigere /etc/portage/package.use.

F.eks., hvis du ikke vil have berkdb-understøttelse globalt, men kun vil have den til mysql, ville du tilføje:

Kode oversigt 2.3: /etc/portage/package.use eksempel

dev-db/mysql berkdb

Du kan selvfølgelig også specifikt udlade USE-flag for et specifikt program. F.eks., hvis du ikke vil have java-understøttelse i PHP:

Kode oversigt 2.4: /etc/portage/package.use eksempel nr.2

dev-php/php -java

Erklæringer af midlertidige USE-flag

Nogen gange vil du ønske at tilføje en specifik USE-indstilling kun én gang. I stedet for at redigere /etc/make.conf to gange (for at lave og fjerne USE-ændringer) kan du bare erklære USE-variabelen, som en miljø-variabel. Huske at, når du gen-emerger eller opdaterer dette program (enten specifik eller som en del af en systemopdatering), vil dine ændringer forsvinde!

Som et eksempel, vil vi midlertidigt fjerne java fra USE-opsætningen, når vi installerer mozilla.

Kode oversigt 2.5: Brug af USE, som en miljøvariabel

# USE="-java" emerge mozilla

Automatiske USE-flag

Efter at et antal pakker er installeret, kan yderligere USE-flag blive automatisk aktiveret for dig, hvis du ikke selv deaktiverer dem. For at se listen af pakker, som igangsætter automatiske USE-flag, tjek /etc/make.profile/use.defaults- og use.defaults-filerne i de øvre profiler.

Kode oversigt 2.6: Et udsnit af /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

Rangorden

Selvfølgelig er der en vis rangorden på hvilken indstilling, der har prioritet over USE-opsætning. Du vil ikke erklære USE="-java", kun for at se om at java stadigvæk er brugt i forhold til en indstilling, som har en højere priotitet. Rangordenen for USE-opsætningen er, opstilt efter prioritet (første har laveste prioritet):

  1. Standard USE-opsætning, erklæret i make.defaults filens delen af din profil
  2. Arvet USE-opsætning, hvis en pakke fra /etc/make.profile/use.defaults er installeret
  3. Brugerdefineret USE-indstilling i /etc/make.conf
  4. Brugerdefineret USE-indstilling, som en miljø-variabel
  5. Brugerdefineret USE-indstilling i /etc/portage/package.use

For at se den færdige USE-opsætning, som set af Portage, kør emerge --info. Dette vil give dig en liste over alle relevante variabler (inklusiv USE-variabler) med indholdet brugt af Portage.

Kode oversigt 2.7: At køre emerge --info

# emerge --info

Tilpasse hele dit system ved brug af nye USE-flag

Hvis du har ændret dine USE-flag og ønsker at hele dit system skal bruge disse nye flag, brug emerge --newuse valgmulighed:

Kode oversigt 3.14: Genbygning af hele systemet

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

Dernæst, kør Portages depclean for at fjerne betingede afhængigheder som er blevet emerged på dit "gamle" system, men som er blevet forældet ved brug af de nye USE-flag.

Advarsel: Kørsel af emerge --depclean er en farlig opgave og bør håndteres med forsigtighed. Dobbelt-tjek den leverede liste af "forældede" pakker for at sørge for at den ikke fjerner pakker, som du behøver. I det følgende eksempel, tilføjer vi -p-kontakten for at have depclean til at kun vise pakkerne, uden at fjerne dem.

Kode oversigt 2.9: Fjernelse af forældede pakker

# emerge -p --depclean

Når depclean er færdig, kør revdep-rebuild for genbygge de programmer, som er dynamisk linket til delte objekter, leveret af mulige fjernede pakker. revdep-rebuild er en del af gentoolkit-pakken; glem ikke at emerge den først.

Kode oversigt 2.10: Kørsel af revdep-rebuild

# revdep-rebuild

Når det hele er udført, bruger dit system de nye USE-flag indstillinger.

2.c. Pakke-specifikke USE-flag

Se tilgængelige USE-flag

Lad os tage eksemplet fra mozilla: hvilke USE-flag lytter den til? For at finde ud af dette, bruger vi emerge med --pretend og --verbose valgmulighederne:

Kode oversigt 3.1: Se brugte USE-flag

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap 
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft 

emerge er ikke det eneste værktøj til dette job. I virkeligheden har vi et værktøj tilegnet til pakke-informationer, kaldet equery, som er placeret i gentoolkit-pakken. Først, installer gentoolkit:

Kode oversigt 3.2: Installation af gentoolkit

# emerge gentoolkit

Kør nu equery med uses parameteren for at se USE-flag af en vis pakke. F.eks. gnumeric-pakken:

Kode oversigt 3.3: Brug af equery for at se brugte USE-flag

# 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. Portages egenskaber

3.a. Portage egenskaber

Portage har yderligere egenskaber, som gør din Gentoo-oplevelse endnu bedre. Mange af disse egenskaber kræver specifikke softwareværktøjer, som forbedrer ydelse, stabilitet, sikkerhed ...

For at aktivere eller deaktivere specifikke Portage-egenskaber, skal du redigere /etc/make.confs FEATURES-variabel, som indeholder de forskellige feature-nøgleord, separeret med tomme pladser. I flere tilfælde skal du også installere yderligere værktøjer, som denne egenskab afhænger af.

Ikke alle egenskaber, som Portage understøtter er vist her. For en fuld oversigt, læs da make.conf man-side:

Kode oversigt 1.1: Læsning af make.conf man-side

$ man make.conf

For at finde ud af dine FEATURES standard-indstillinger, kør emerge --info og søg efter FEATURES-variablen eller greb den ud:

Kode oversigt 1.2: Finding af FEATURES som allerede er indstillet

$ emerge --info | grep FEATURES

3.b. Distribueret samling

Brug af distcc

distcc er et program, der distribuerer kompilering over flere, ikke nødvendigvis identiske, maskiner på et netværk. distcc-klienten sender alle nødvendige informationer til de tilgængelige distcc-servere (som kører distccd), så de kan kompilere dele af kildekode for klienten. Slutresultatet er en hurtigere kompileringstid.

Du kan finde flere uddybbende informationer om distcc (og informationer om hvordan man får det til at virke med Gentoo) i vores Gentoo Distcc Dokumentation.

Installation af distcc

Distcc kommer med en grafisk overvåger til at overvåge de opgaver, som din computer sender afsted til kompileringen. Hvis du bruger Gnome, så indsæt 'gnome' i dine USE-flag. Hvis du imidlertid ikke bruger Gnome og stadigvæk vil have overvågeren, så skal du indsætte 'gtk' i dine USE-flag.

Kode oversigt 2.1: Installation af distcc

# emerge distcc

Aktivering af Portage-understøttelse

Tilføj distcc til din FEATURES-variable inde i /etc/make.conf. Derefter, rediger MAKEOPTS-variablen til dit behov. En kendt guideline er at indsætte "-jX" med X som det antal CPUer som kører distccd (inklusiv den nuværende vært) plus en, men du vil måske have bedre resultater med andre numre.

Kør nu distcc-config og gå til listen over distcc-servere der er til rådighed. For et simpelt eksempel, forventer vi at de tilrådige distcc servere er 192.168.1.102 (nuværende vært), 192.168.1.103 og 192.168.1.104 (to "fjerne" værter):

Kode oversigt 2.2: Indstilling af distcc for bruge tre tilrådige distcc-servere

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Selvfølgelig, glem ikke også at køre distccd-daemonen (baggrundsprocessen):

Kode oversigt 2.3: Start af distcc-daemon

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Midlertidig Gemt Samling

Om ccache

ccache er en hurtig opbevarelse af midlertidige samlinger. Når du samler et program, vil den 'cache' mellemresultater, så når du igen gensamler det samme program, vil samlingstiden blive reduceret meget. I normale samlinger kan det resultere op fra 5 til 10 gange hurtigere samlingstid.

Hvis du er interesseret i hvordan ccache fungerer, besøg venligst ccache hjemmeside.

Installation af ccache

For at installere ccache, kør emerge ccache:

Kode oversigt 3.1: Installation af ccache

# emerge ccache

Aktivering af Portage-understøttelse

Åben /etc/make.conf og tilføj ccache til FEATURES-variabelen. Derefter, tilføj en ny variabel kaldet CCACHE_SIZE og sæt den til "2G":

Kode oversigt 3.2: Redigering af CCACHE_SIZE i /etc/make.conf

CCACHE_SIZE="2G"

For at tjekke ccache funktioner, spørg ccache for at give dig dens statistikker:

Kode oversigt 3.3: Se ccache-statistikker

# ccache -s

Brug af ccache til ikke-Portage C-samling

Hvis du vil bruge ccache til ikke-Portage samlinger, tilføj /usr/lib/ccache/bin til begyndelsen af din PATH-variabel (før /usr/bin). Dette blive gjort ved at redigere /etc/profile:

Kode oversigt 3.4: Redigering af /etc/profile

PATH="/usr/lib/ccache/bin:${PATH}"

3.d. Binære pakke understøttelse

Oprettelse af Præsamlede pakker

Portage understøtter installationen af præsamlede pakker. Selvom Gentoo ikke leverer præsamlede pakker af sig selv (udover GRP-snapshots) kan Portage være fuld opmærksom på præsamlede pakker.

For at oprette præsamlede pakker, kan du bruge quickpkg hvis pakken allerede er installeret på dit system, eller emerge med --buildpkg eller --buildpkgonly valgmulighederne.

Hvis du vil have Portage til at oprette præsamlede pakker for enhver pakke du installerer, tilføj buildpkg til FEATURES-variablen.

Mere udvidet understøttelse for at oprette præsamlede pakkesæt, kan gøres med catalyst. For flere informationer om catalyst, læs venligst Catalyst Reference Manual (engelsk) og Catalyst Howto (også engelsk).

Installation af præsamlede pakker

Selvom Gentoo ikke levere en, kan du oprette en central vært, hvor du gemmer dine præsamlede pakker. Hvis du vil bruge denne vært, skal du gøre Portage opmærksom på den ved at bruge PORTAGE_BINHOST-variablen, som peger på denne. F.eks. hvis de præsamlede pakker er på ftp://buildhost/gentoo:

Kode oversigt 4.1: Opsætning af PORTAGE_BINHOST i /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Når du vil installere en præsamlet pakke, tilføj --getbinpkg valgmuligheden til emerge-kommandoen sammen med --usepkg valgmuligheden. Den førstnævnte fortæller emerge at hente de præsamlede pakker fra den tidligere nævnte vært, imens den sidstnævnte spørger emerge om at prøve at installere den præsamlede pakke først, før den henter kildekoderne og samler den.

F.eks. for at installere gnumeric med en præsamlet pakke:

Kode oversigt 4.2: Installation af gnumeric præsamlede pakke

# emerge --usepkg --getbinpkg gnumeric

Flere informationer om emerges præsamlede pakkemuligheder kan blive fundet i emerges man-sider:

Kode oversigt 4.3: Læsning af emerge man-sider

# man emerge

4. Startscripts

4.a. Runlevels

Opstart af dit system

Når du starter dit system, vil du ligge mærke til en del tekst, som flyder forbi. Hvis du virkelig ligger mærke til det, vil nu bemærke at denne tekst er den samme hver gang du genstarter dit system. Sekvensen af alle disse aktiviteter, er kaldet opstartsekvensen og er (mere eller mindre) statisk defineret.

Først vil din boot-loader hente kerne-billedfilen, som du har defineret i boot-loader opsætningen ind i hukommelsen efter den fortæller processoren til at køre kernen. Når kernen er hentet og kører, vil den initialisere alle kerne-specifikke strukturer og opgaver, og starte init-processen.

Denne proces sørger så for, at alle filsystemer (defineret i /etc/fstab) er mountet og klar til at blive brugt. Så igangsætter den flere scripts, placeret i /etc/init.d, som vil starte de tjenester du behøver, for at have et succesfuldt opstartet system.

Til sidst, når alle scripts er startet, aktiverer init terminalerne (i de fleste tilfælde er det kun de virtuelle konsoler, som er gemt bag ved Alt-F1, Alt-F2 osv.) vedhæftet en speciel proces, kaldet agetty til den. Denne proces vil så sørge for at du kan logge ind igennem disse terminaler ved at køre login.

Init-scripts

init starter ikke kun scripts i /etc/init.d tilfældigt. Den kører endda ikke alle scripts i /etc/init.d, men kun dem den er blevet bedt om køre. Den beslutter hvilke scripts, der skal startes, ved at kigge i /etc/runlevels.

Først kører init alle scripts fra /etc/init.d, som har symbolske links inden i /etc/runlevels/boot. Sædvanligvis vil den starte scripts i alfabetisk orden, men nogle scripts har afhængighedsinformationer i dem, som fortæller systemet at et andet script skulle blive kørt i stedet for en anden én.

Når alle /etc/runlevels/boot refererede scripts er kørt, fortsætter init med at køre de scripts, som har et symbolsk link til dem i /etc/runlevels/default. Igen, den vil bruge den alfabetiske orden for at beslutte hvilket script, den skal køre først, undtagen hvis et script har afhængighedsinformationer i den, i hvilket tilfælde rækkefølgen er ændret til at levere en gyldig opstartsekvens.

Hvordan init virker

Selvfølgelig vil init ikke beslutte alt selv. Den behøver en opsætningsfil, som specificerer, hvilke aktiviteter der skal udføres. Denne opsætningsfil er /etc/inittab.

Hvis du husker opstartssekvensen, som vi lige har beskrevet for dig, vil du huske at inits første aktivitet er at mounte alle filsystemer. Dette er defineret i den følgende linje fra /etc/inittab:

Kode oversigt 1.1: System-initialieringslinjen i /etc/inittab

si::sysinit:/sbin/rc sysinit

Denne linje fortæller init at den skal køre /sbin/rc sysinit for at initialisere systemet. /sbin/rc-scriptet tager sig af initialiseringen, så du kan sige at init ikke gør meget -- den delegerer opgaven om, for at initialise systemet til en anden proces.

For det andet, init starter alle scripts, som har symbolske links i /etc/runlevels/boot. Dette er defineret i den følgende linje:

Kode oversigt 1.2: System-initialiseringen, fortsat

rc::bootwait:/sbin/rc boot

Igen, udfører rc-scriptet de nødvendige opgaver. Noter at ting givet til rc (boot) er det samme, som underbiblioteket af /etc/runlevels, som er brugt.

Nu vil init tjekke dens opsætningsfil for at se hvad runlevel der bør køre. For at beslutte dette, læser den følgende linje fra /etc/inittab:

Kode oversigt 1.3: initdefault-linjen

id:3:initdefault:

I dette tilfælde (som hoveddelen af Gentoo-brugere vil bruge), er runlevel'ens id 3. Ved at bruge denne information, tjekker init hvad den skal køre for at starte runlevel 3:

Kode oversigt 1.4: runlevel definitioner

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

Linjen, som definerer level 3, bruger rc-scriptet til at starte tjenesterne (nu med parameteren default). Noter at parameteren af rc er den samme, som underbiblioteket i /etc/runlevels.

Når rc er færdig, beslutter init hvilke virtuelle konsoler, der bør aktiveres og hvilke kommandoer den behøver at køre ved hver konsol:

Kode oversigt 1.5: Virtuelle konsolers definitioner

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

Hvad er en runlevel?

Du har set at init bruger et nummeringsskema for at beslutte hvilke runlevel'er, den skal aktivere. En runlevel er en tilstand, i hvilket dit system kører og indeholder en samling af scripts (runlevel-scripts eller initscripts), som skal være kørt, når du indtræder eller forlader en runlevel.

I Gentoo er der syv runlevels defineret: tre interne runlevels, og fire brugerdefinerede runlevels. De interne runlevels er kaldet sysinit, shutdown og reboot og gør præcist som deres navne siger: initialisere systemet, slukker systemet og genstarter systemet.

De brugerdefinerede runlevels er disse med en ledsagende /etc/runlevels underbibliotek: boot, default, nonetwork og single. boot-runlevel starter alle system-nødvendige tjenester, som alle andre runlevels bruger. De resterende tre runlevels er forskellige i hvilke tjenester, de starter: default er brugt til dagsoperationer, nonetwork er brugt i det tilfælde, hvor ingen netværksaktivitet er krævet, og single er brugt til når du skal reparere systemet.

Arbejde med init-scripts

De scripts, som rc-processen starter, er kaldet init scripts. Hver script i /etc/init.d kan blive kørt med disse parametre start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme eller broken.

For at starte, stoppe eller genstarte en tjeneste (og alle afhængige tjenester), skal start, stop og restart bruges:

Kode oversigt 1.6: Start af Postfix

# /etc/init.d/postfix start

Bemærk: Kun de tjenester, som kræver at den givne tjeneste er stoppet eller genstartet. De andre afhængige tjenester (dem som bruger tjenesten, men ikke kræver den) er ladt uberørt.

Hvis du vil stoppe en tjeneste, men ikke tjenester der afhænger af den, kan du bruge pause parameteren:

Kode oversigt 1.7: Stop af Postfix, men lad de afhængige tjenester blive kørende

# /etc/init.d/postfix pause

Hvis du vil se hvilken status en tjeneste har (startet, stoppet, pause, ...), kan du bruge status parameteren:

Kode oversigt 1.8: Statusinformation for postfix

# /etc/init.d/postfix status

Hvis statusinformationen fortæller dig, at tjenesten kører, men du ikke ved om den gør det, kan du tilbagestille statusinformationen til "stoppet" med zap-parameteren:

Kode oversigt 1.9: Tilbagestille statusinformation for postfix

# /etc/init.d/postfix zap

For at spørge hvilke afhængigheder tjenesterne har, kan du bruge iuse eller ineed. Med ineed kan du se hvilke tjenester, som er virkelige nødvendige for den korrekte funktionsbestemte metode af en tjeneste. iuse på den anden side, viser at tjenester, som er brugt af tjenesten, men ikke nødvendigvis for den korrekte funktionalitet.

Kode oversigt 1.10: Kræve en liste af alle nødvendige tjenester, som Postfix afhænger

# /etc/init.d/postfix ineed

Lige sådan kan du spørge hvilke tjenester kræver tjenesten (needsme) eller den kan bruge (usesme):

Kode oversigt 1.11: Kræve en liste af alle tjenester, som kræver Postfix

# /etc/init.d/postfix needsme

Til sidst, kan du spørge hvilke afhængigheder, som tjenesten kræver, men som mangler:

Kode oversigt 1.12: Kræve en liste over manglende afhængigheder for Postfix

# /etc/init.d/postfix broken

4.b. Arbejde med rc-update

Hvad er rc-update?

Gentoos initsystem bruger et afhængighedstræ, som beslutter hvilke tjenester, som behøver at blive startet først. Da dette er en kedelig opgave, som vi ikke vil have at vores brugere skal gøre manuelt, har vi lavet værktøjer, som gør det lettere for administrationen af runlevels og init-scripts.

Med rc-update kan du tilføje og fjerne init-scripts til en runlevel. rc-update-værktøjet vil så automatisk spørge for depscan.sh-scriptet for at genbygge afhængighedstræet.

Tilføje og fjerne tjenester

Du har allerede tilføjet init-scripts til "default" runlevel igennem installation af Gentoo. På dette tidspunkt har du måske ikke haft en forståelse for hvad "default" er til for, men nu burde du. rc-update-scriptet kræver en anden parameter, som definerer aktiviteten: add (tilføj), del (slet) eller show (vis).

For at tilføje eller fjerne et init-script, skal du blot give rc-update add eller del parameteren, fulgt af init-scriptet og runlevel. F.eks.:

Kode oversigt 2.1: Fjernelse af Postfix fra default runlevel

# rc-update del postfix default

rc-update show kommandoen vil vise de tilgængelige init-scripts og vise en liste fra hvilke runlevels, de vil køre:

Kode oversigt 2.2: Modtagelse af init-script informationer

# rc-update show

4.c. Opsætning af tjenester

Hvorfor er det nødvendigt at opsætte ekstra?

Init-scripts kan være pænt komplekse. Det er derfor ikke interessant at have brugere til at redigere direkte i init-scripts, da det kunne skabe flere fejl. Det er dog vigtigt at kunne opsætte sådan en tjeneste. F.eks. vil du ønske at give flere muligheder til tjenesten selv.

En anden grund er at have denne opsætning udenfor init-script, er at kunne opdatere init-scripts uden at skulle være bange for at dine opsætningsændringer bliver overskrevet.

/etc/conf.d biblioteket

Gentoo leverer en let metode for at opsætte sådan en tjeneste: hver init-script som kan blive opsat, har en fil i /etc/conf.d. F.eks. har apache2s initscript (kaldet /etc/init.d/apache2) en opsætningsfil, kaldet /etc/conf.d/apache2, hvilket indeholder de indstillinger, som du vil sætte til Apache 2 serveren, når den er startet:

Kode oversigt 3.1: Variabler defineret i /etc/conf.d/apache2

APACHE2_OPTS="-D PHP4"

Sådan en opsætningsfil inderholder variabler og kun variabler (lige som /etc/make.conf), som gør det meget let at opsætte tjenester. Det tillader os at levere flere informationer omkring variablerne (som kommentarer).

4.d. Skrive init-scripts

Skal jeg gøre det?

Nej. At skrive et init-script er normalt ikke nødvendigt, idet Gentoo leverer klar-til-brug init-scripts til alle leverede tjenester. Dog, du har måske installeret en tjeneste, uden at bruge Portage, hvilket betyder at du i de fleste tilfælde skal oprette et init-script.

Brug ikke init-script leveret til tjenesten, hvis den ikke er eksklusivt skrevet til Gentoo: Gentoos init-scripts er ikke kompatibel med de init-scripts brugt af de andre distributioner!

Layout

Basislayoutet af en init-script er vist nedenfor.

Kode oversigt 4.1: Basislayout af en init-script

#!/sbin/runscript

depend() {
  (Afhængighedsinformation)
}

start() {
  (Kommandoer nødvendige for at starte tjenesten)
}

stop() {
  (Kommandoer nødvendige for at stoppe tjenesten)
}

restart() {
  (Kommandoer nødvendige for at genstarte tjenesten)
}

Enhver init-script kræver start() funktionen til at blive defineret. Alle andre sektioner er valgbare.

Afhængigheder

Der er to afhængigheder, som du kan definere: use og need. Som vi har fortalt før, er need-afhængigheden mere strikt end use-afhængigheden. Ved at følge denne afhængighedstype, får du den tjeneste du behøver, eller den virtuelle-afhængighed.

En virtuel afhængighed er en afhængighed, som en tjeneste leverer, men den er ikke kun leveret af denne tjeneste. Dit init-script kan være afhængigt af en systemlogning, men der er mange systemloggere at vælge imellem (metalogd, syslog-ng, sysklogd, ...). Da du ikke kan mangle enhver af dem (intet normalt system har alle disse systemloggere installeret og kørende) vil sørge for at alle disse tjenester leverer en virtuel afhængighed.

Lad os tage et kig på afhængighedsinformationerne for postfix-tjenesten.

Kode oversigt 4.2: Afhængighedsinformationer for Postfix

depend() {
  need net
  use logger dns
  provide mta
}

Som du kan se, postfix-tjenesten

  • kræver (virtuel) net-afhængigheden (som er sørget for, f.eks. /etc/init.d/net.eth0)
  • bruger (virtuel) logger-afhængigheden (som er sørget for, f.eks. /etc/init.d/syslog-ng)
  • bruger (virtuel) dns-afhængigheden (som er sørget for, f.eks. /etc/init.d/named)
  • sørger for (virtuel) mta-afhængighed (som er brugt normalt af alle mail-servere)

Kontrol over rækkefølgen

I nogle tilfælde, kræver du ikke en tjeneste, men ønsker at din tjeneste bliver startet før (eller efter) en anden tjeneste hvis den er tilgængelig på systemet (noter betingelsen - det er ikke en afhængighed længere) og kører i samme runlevel (noter betingelsen - kun tjenester i samme runlevel er involveret). Du kan sørge for denne information ved at bruge before- (før) eller after- (efter) indstillingerne.

Som et eksempel, vil vi se på indstillingerne til Portmap-tjenesten:

Kode oversigt 4.3: depend()-funktionen i Portmap-tjenesten

depend() {
  need net
  before inetd
  before xinetd
}

Du kan også bruge "*" til at fange alle tjenester i samme runlevel, dog er det ikke tilrådeligt.

Kode oversigt 4.4: Kørsel af init-script, som den første script i runlevel'en

depend() {
  before *
}

Standardfunktioner

Lige efter depend()-funktionaliteten, behøver du også at definere start()-funktionen. Denne indeholder alle de kommandoer, som er nødvendige for at initialisere din tjeneste. Det er tilrådeligt at bruge ebegin og eend funktionerne for at informere brugeren om hvad der sker:

Kode oversigt 4.5: Eksempel start()-funktionen

start() {
  ebegin "Start af min tjeneste"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Hvis du vil have flere eksempler af start()-funktionen, læs venligt kildekoden til de tilgængelige init-scripts i dit /etc/init.d-bibliotek. Som til start-stop-daemon, er der en udemærket man-side tilrådighed, hvis du behøver flere informationer:

Kode oversigt 4.6: man-side til start-stop-daemon

# man start-stop-daemon

Andre funktioner, som du kan definere er: stop() og restart(). Du er ikke tvunget til at definere disse funktioner! Vores initsystem er intelligent nok til at udfylde disse funktioner selv, hvis du bruger start-stop-daemon.

Gentoos opstartsscript-syntaks er baseret på Bourne Again Shell (bash), så du kan frit bruge bash-kompatible konstruktioner inden i dine opstartsscripts.

Tilføje skræddersyede indstillinger

Hvis du vil have dit init-script til at understøtte flere indstillinger, end dem vi allerede har vist dig, bør du tilføje disse indstillinger i opts-variabelen, og oprette en funktion med samme navn som indstillingen. F.eks. for at understøtte en valgmulighed kaldet restartdelay:

Kode oversigt 4.7: Understøttelse af restartdelay-valgmuligheden

opts="${opts} restartdelay"

restartdelay() {
  stop
  sleep 3    # Vent 3 sekunder før der startes igen
  start
}

Tjenestens opsætningsvariabler

Du behøver ikke at gøre noget for at understøtte en opsætningsfil i /etc/conf.d: hvis dit init-script er startet, vil følgende filer automatisk blive til kilder (dvs. variablerne er tilgængeligt til brug):

  • /etc/conf.d/<dit init-script>
  • /etc/conf.d/basic
  • /etc/rc.conf

Også, hvis dit init-script sørger for en virtuel afhængighed (som net), vil filen blive, associeret med den afhængighed (som /etc/conf.d/net), også blive til kilder.

4.e. Ændring af runlevel'ens adfærd

Hvem kan drage nytte af dette?

Mange bærbar-brugere kender situationen: når du er hjemme og skal starte net.eth0 og når du er på vejen vil du ikke starte net.eth0 (idet der ikke er noget netværk tilgængeligt). Med Gentoo kan du ændre runlevel-adfærd til din egen fordel.

F.eks. kan du oprette en anden "default" runlevel, som du kan starte og indeholder andre initscripts fastsat til det. Du kan så vælge ved opstart, hvilken "default" runlevel du vil bruge.

Brug af softlevel

Først af alt, opret runlevel-mappen til din anden "default" runlevel. Som et eksempel opretter vi offline runlevel:

Kode oversigt 5.1: Oprettelse af runlevel-mappe

# mkdir /etc/runlevels/offline

Tilføj de nødvendige initscripts til dine nyoprettede runlevels. F.eks. hvis du vil have en eksakt kopi af din nuværende default runlevel, men uden net.eth0:

Kode oversigt 5.2: Tilføjelse af nødvendige initscripts

(Kopier alle services fra standard runlevel til offline runlevel)
# ls /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Fjern uønskede services fra offline runlevel)
# rc-update del net.eth0 offline
(Vise aktive services i offline runlevel)
# rc-update show offline
(Delvis udsnit af output)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Rediger nu din boot-loader opsætning og tilføj en ny post til offline runlevel'en. F.eks. i /boot/grub/grub.conf:

Kode oversigt 5.3: Tilføjelse af post til offline runlevel'en

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

Voilà, nu er alt klart. Hvis du starter dit system op og vælger den nyoprettede post, vil offline runlevel'en blive brugt i stedet for default.

Brug af bootlevel

Brug af bootlevel er komplet i overenstemmelse med softlevel. Den eneste forskel her er at du definerer en anden "boot" runlevel i stedet for en anden "default" runlevel.

5. Miljø-variabler

5.a. Miljø-variabler?

Hvad de er

En miljø-variabel er et navngivent objekt, der inderholder informationer, som bliver benyttet af en eller flere applikationer. Mange brugere (specielt dem der er nye i Linux) finder det en smule mærkeligt eller uhåndterligt. Dette er dog en fejltagelse; ved at bruge miljø-variabler, kan man let skifte en indstilling for en eller flere applikationer.

Vigtige eksempler

Den følgende tabel viser en række af variabler, der benyttes af et Linux system og beskriver deres brug. Eksempelværdier er præsenteret efter tabellen.

Variabel Beskrivelse
PATH Denne variabel indeholder en kolonsepareret liste over mapper, som dit system leder i efter eksekverbare filer. Hvis du indtaster et navn på en eksekverbar fil (som f.eks. ls, rc-update eller emerge), og denne fil ikke er placeret i en af de oplistede mapper, vil dit system ikke eksekvere den (medmindre du angiver den fulde sti som kommando, f.eks. /bin/ls).
ROOTPATH Denne variabel har samme funktion som PATH, men denne bestemmer kun hvilke mapper, som skal tjekkes når root-brugeren indtaster en kommando.
LDPATH Denne variabel indeholder en kolonsepareret liste over mapper, som den 'dynamiske linker' søger igennem, for at finde et bibliotek.
MANPATH Denne variabel indeholder en kolonsepareret liste over mapper, som kommandoen man søger i, efter man-siderne.
INFODIR Denne variabel indeholder en kolonsepareret liste over mapper, som kommandoen info søger i, efter info-siderne.
PAGER Denne variabel indeholder stien til det program, der benyttes til at vise indholdet af en fil med (som f.eks. less eller more).
EDITOR Denne variabel indeholder stien til det program, der benyttes til at ændre indholdet af filer med (som f.eks. nano eller vi).
KDEDIRS Denne variabel indeholder en kolonsepareret liste over mapper, som indeholder KDE-specifikt materiale.
CLASSPATH Denne variabel indeholder en kolonsepareret liste over mapper, som indeholder Java-klasser.
CONFIG_PROTECT Denne variabel indeholder en mellemrums-adskilt liste over mapper, der skal beskyttes af Portage under opdateringer.
CONFIG_PROTECT_MASK Denne variabel indeholder en mellemrums-adskilt liste over mapper, der ikke skal beskyttes af Portage under opdateringer.

Nedenfor finder du et eksempel af en definition af alle disse variabler:

Kode oversigt 1.1: Eksempeldefinitioner

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. Definition af variabler globalt

Mappen /etc/env.d

For at centralisere definitionerne af disse variable, introducerer Gentoo mappen /etc/env.d. I denne mappe finder du en række af filer, som 00basic, 05gcc etc., der indeholder variablerne som applikationernes filnavne antyder, har brug for.

Da du f.eks. installerede gcc, blev en fil kaldet 05gcc oprettet, af den ebuild, der indeholder definitionerne på de følgende variabler:

Kode oversigt 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"

Andre distributioner vil fortælle dig, at du skal ændre eller tilføje sådanne miljø-variabeldefinitioner i /etc/profile eller andre steder. Gentoo gør på den anden side det let for dig (og for Portage), at vedligeholde og administrere miljø-variablerne uden at skulle lægge mærke til rækken af filer, der kan indeholde miljø-variabler.

Når f.eks. gcc bliver opdateret, bliver filen /etc/env.d/05gcc også opdateret, uden at kræve nogen som helst interaktion fra brugeren.

Dette er ikke kun til fordel for Portage, men også for dig som bruger. Fra tid til anden kan du blive spurgt, om du vil sætte en bestemt miljøvariabel for hele systemet. Som et eksempel tager vi variablen http_proxy. I stedet for at rode med /etc/profile, kan du nu oprette en fil (/etc/env.d/99local) og indtaste din(e) definition(er) i den:

Kode oversigt 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Ved at benytte samme fil til alle dine variabler, har du et hurtigt overblik over de variabler, du har defineret selv.

Scriptet env-update

Flere filer i /etc/env.d definerer variablen PATH. Dette er ikke forkert; når du kører env-update, vil det tilføje de flere definitioner før den opdaterer miljø-variablerne, og gør det dermed nemmere for pakker (eller brugere) at tilføje deres egen opsætning af miljø-variablerne, uden at forstyrre de allerede eksisterende værdier.

Scriptet env-update vil tilføje værdierne i den alfabetiske rækkefølge af /etc/env.d filerne. Dette er årsagen til mange af filerne i /etc/env.d begynder med et nummer.

Kode oversigt 2.3: Opdateringsrækkefølge benyttet af env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Sammenkædningen af variabler sker ikke altid, kun med de følgende variabler: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH og PRELINK_PATH_MASK. For alle andre variabler, er sidste nye defineret værdi (i alfabetisk orden af filer i /etc/env.d) brugt.

Når du kører env-update, vil scriptet automatisk oprette alle miljøvariablerne og placere dem i /etc/profile.env (som er brugt af /etc/profile). Det vil også trække informationen ud fra variablen LDPATH, og bruge den til at oprette /etc/ld.so.conf. Efter dette, vil det køre ldconfig for at genskabe filen /etc/ld.so.cache, der benyttes af den 'dynamiske linker'.

Hvis du vil se effekten af env-update straks efter du har kørt det, kør den følgende kommando for at opdatere dit miljø. Brugere, der selv har installeret Gentoo, vil sikkert huske dette fra installationsinstruktionerne:

Kode oversigt 3.14: Opdatering af miljøet

# env-update && source /etc/profile

Bemærk: Ovenstående kommando opdaterer kun variabler i din nuværende terminal, nye konsoller og deres børn. Derfor, hvis du arbejder i X11, skal du enten indtaste source /etc/profile i hver ny terminal, du åbner eller genstarte X, så alle nye terminaler henter kilden fra de nye variabler. Hvis du bruger en loginhåndtering, gå root og indtast /etc/init.d/xdm restart. Hvis ikke, skal du logge ud og logge ind igen for at X kan spawne børn med de nye variabelværdier.

5.c. Definering af variabler lokalt

Brugerspecifikt

Det er ikke altid, du vil definere dine miljø-variabler globalt. F.eks. har du måske lyst til at tilføje /home/min_bruger/bin til variablen PATH, men du vil ikke have, at alle andre brugere på dit system også skal have det i deres PATH. Hvis du vil definere en miljøvariabel lokalt, skal du bruge ~/.bashrc eller ~/.bash_profile:

Kode oversigt 3.1: Udvidelse af PATH til lokalt brug i ~/.bashrc

PATH="${PATH}:/home/min_bruger/bin"

Når du logger ind igen, vil variablen PATH være opdateret.

Sessionsspecifikt

Nogle gange er der behov for endnu strengere definitioner. Du vil måske gerne være i stand til at benytte binære filer fra en midlertidigt mappe, som du har oprettet, uden at bruge stien til de binære filer, eller ændre i ~/.bashrc til den korte tid, du har brug for den.

I sådant et tilfælde kan du blot definere variablen PATH i din nuværende session, ved at bruge kommandoen export. Så længe du ikke logger ud, vil variablen PATH bruge de midlertidige indstillinger.

Kode oversigt 3.2: Definering af en sessionsspecifik miljø-variabel

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. At arbejde med Portage

1. Filer og biblioteker

1.a. Portage-filer

Opsætningsdirektiver

Portage kommer med en standardopsætning gemt i /etc/make.globals. Når du kigger i den, vil du lægge mærke til at alt Portage-opsætning er håndteret igennem variabler. Hvilke variabler Portage lytter til og hvad de betyder, bliver beskrevet senere.

Siden mange opsætningsdirektiver er forskellige imellem arkitekturer, har Portage også standardopsætningsfiler som er en del af din profil. Din profil bliver peget på af /etc/make.profile symlinket; Portages opsætninger bliver sat i make.defaults filerne i din profil og alle parent profiler. Vi vil forklare mere omkring profiler og /etc/make.profile-folderen senere.

Hvis du planlægger at ændre en opsætningsvariabel, skal du ikke ændre /etc/make.globals eller make.defaults. I stedet for, brug /etc/make.conf, som har forrang over de andre tidligere nævnte filer. Du vil også finde en /etc/make.conf.example. Som navnet fortæller, er den ment som et eksempel - Portage læser ikke i denne fil.

Du kan også definere en Portage-opsætningsvariabel som en miljøvariabel, men vi anbefaler det ikke.

Profil-specifikke informationer

Vi har allerede mødt /etc/make.profile-folderen. Nå, men det er faktisk ikke en folder, men en symbolsk henvisning til en profil, der som standard er en inde fra /usr/portage/profiles. Du kan dog oprette dine egne profiler et andet sted og pege til dem. Profilen, som det symbolske link peger på, er den profil dit system tilhører.

En profil indeholder arkitektur-specifikke informationer til Portage, f.eks. en liste af pakker der passer til systemet i sammenhæng med en profil, en liste af pakker, som ikke virker (eller er maskeret) etc.

Bruger-specifik opsætning

Når du ønsker at overskrive Portages egenskaber, i forhold til installationen af software, skal du redigere filer inde i /etc/portage. Du er virkelig anbefalet til at bruge filer inde i /etc/portage og virkelig afskrækket til at overskrive egenskaben igennem miljø-variabler!

Inde i /etc/portage kan du oprette følgende filer:

  • package.mask, som er en liste over pakker du aldrig ønsker Portage at installere
  • package.unmask, som er en liste over pakker, som du vil have mulighed for at installere, selvom Gentoo-udviklere virkeligt afskrækker dig fra at emerge dem
  • package.keywords, som er en liste over pakker, som du vil have mulighed for at installere, selvom denne pakke ikke er fundet muligt til dit system eller arkitektur (endnu)
  • package.use, som er en liste over USE-flag, som du vil bruge til specifikke pakker, uden at hele systemet bruger disse USE-flag

Flere informationer omkring /etc/portage-folderen og en fuldstændig liste af mulige filer du kan oprette, kan blive fundet i Portages man-sider:

Kode oversigt 1.1: Læsning af Portages man-sider

$ man portage

Ændring af Portage-filer og placering af foldere

De tidligere nævnte opsætningsfiler kan ikke blive gemt et andet sted - Portage vil altid kigge efter disse opsætningsfiler i deres eksakte placering. Portage bruger dog mange andre steder til forskellige formål: bygge-folder, kildekode-lager, Portage-træets placering ...

Alle disse hensigter er velkendte placeringer, men kan ændres til din egen smag igennem /etc/make.conf. Resten af dette kapitel forklarer hvilke special-hensigt-placeringer, Portage bruger, og hvordan man ændrer deres placering på dit filsystem.

Dette dokument er dog ikke ment til at bruges som reference. Hvis du vil have 100% dækning, læs venligst Portages og make.confs man-sider:

Kode oversigt 1.2: Læsning af Portages og make.conf's man-sider

$ man portage
$ man make.conf

1.b. Lagring af filer

Portage-træet

Portage-træets standardplacering er /usr/portage. Dette er defineret ved PORTDIR-variablen. Når du gemmer Portage-træet et andet sted (ved at ændre denne variabel), så glem ikke at ændre /etc/make.profiles symbolske henvisning imens.

Hvis du ændrer PORTDIR-variablen, bør du også ændre følgende variabler, idet de ikke vil notere PORTDIRs ændring. Dette er pga. hvordan Portage håndterer variabler: PKGDIR, DISTDIR, RPMDIR.

Præ-byggede binære filer

Selvom Portage ikke bruger præ-byggede binære filer som standard, er der stor understøttelse for dem. Når du beder Portage om at arbejde med præ-bygget pakker, vil den kigge efter dem i /usr/portage/packages. Denne placering er defineret ved PKGDIR-variablen.

Kildekode

Programmernes kildekoder er gemt i /usr/portage/distfiles som standard. Denne placering er defineret af DISTDIR-variablen.

RPM-filer

Selvom Portage ikke bruger RPM-filer, er det muligt at generere disse ved brug af ebuild-kommandoen (se Ebuild-programmet). Standard-placeringen, hvor Portage gemmer RPM-filer er /usr/portage/rpm og er defineret af RPMDIR-variablen.

Portage Database

Portage gemmer status på dit system (hvilke pakker der er installeret, hvilke filer der tilhører hvilken pakke osv.) i /var/db/pkg. Ændre ikke disse filer manuelt! Dette vil ødelægge Portages kendskab til dit system.

Portage midlertidige filer

Portages midlertidige filer (med modifikationstid, virtuelle, afhængighedstræ informationer osv.) er gemt i /var/cache/edb. Denne placering er virkelig midlertidig: du kan rense den, hvis du ikke kører nogen portage-relaterede programmer på dette tidspunkt.

1.c. Bygning af software

Midlertidige Portage-filer

Portages midlertidige filer er gemt i /var/tmp som standard. Dette er defineret ved PORTAGE_TMPDIR-variablen.

Hvis du ændrer PORTAGE_TMPDIR-variablen, bør du også ændre de følgende variabler, idet de ikke vil notere PORTAGE_TMPDIR-ændringen. Dette er pga. hvordan Portage håndterer variablen: BUILD_PREFIX.

Bygge-folderen

Portage opretter en specifik folder til bygning af hver pakke den emerger, i /var/tmp/portage. Denne placering er defineret af BUILD_PREFIX-variablen.

Direkte filsystems placering

Som standard installerer Portage alle filer i det nuværende filsystem (/), men du kan ændre dette ved sætte ROOT-miljøvariablen. Dette er brugbart, når du vil skabe nye bygge-billedfiler.

1.d. Logningsegenskaber

Ebuild log

Portage kan oprette logfiler for hver ebuild, men kun, når PORT_LOGDIR-variablen er sat til en placering, som kan skrives af Portage (portage-brugeren). Som standard er denne variabel ikke aktiveret.

2. Opsætning gennem variabler

2.a. Opsætning af Portage

Som noteret førhen, er Portage opsætbar igennem variabler, som du bør definere i /etc/make.conf. Læs venligst make.confs man-sider for flere og dybdegående informationer:

Kode oversigt 1.1: At læse make.confs man-sider

$ man make.conf

2.b. Bygge-specifikke valgmuligheder

Opsætning og samlingsvalgmuligheder

Når Portage bygger programmer, flytter den indholdet af de følgende variabler til kompileren og opsætningsscriptet:

  • CFLAGS og CXXFLAGS definerer de ønskede kompiler-flag til C og C++ kompilering
  • CHOST definerer bygningsværtens informationer til programmets opsætningsscript
  • MAKEOPTS bliver flyttet til make-kommandoen og er normalt sat til at definere antallet af parallelisme brugt igennem kompilering. Flere informationer omkring make-valgmuligheder kan blive fundet i make's man-sider.

USE-variablen er også brugt igennem opsætningen og kompileringen, men er blevet forklaret i mange detaljer i de foregående kapitler.

Merge valgmuligheder

Når Portage har emerget en nyere version af en specifik softwaretitel, vil den fjerne de udgåede filer fra gamle versioner på dit system. Portage giver brugeren en 5-sekunders udsættelse, før den afmerger den gamle version. Disse 5 sekunder er defineret af CLEAN_DELAY-variablen.

2.c. Opsætningsfilbeskyttelse

Portages beskyttede placeringer

Portage overskriver filer, som er leveret af nyere versioner af en softwaretitel, hvis filerne ikke er gemt i et beskyttet område. Disse beskyttede placeringer er defineret af CONFIG_PROTECT-variablen og er generelt opsætningsfilsplaceringer. Bibliotekslisten er mellemrums-afgrænset.

En fil, som ville blive skrevet i sådan en beskyttet placering er omdøbt og brugeren er advaret om en nyere eksisterende version af den givne opsætningsfil.

Du kan få mere at vide omkring den nuværende CONFIG_PROTECT-indstilling fra emerge --info outputtet:

Kode oversigt 3.1: Få CONFIG_PROTECT-indstillingen

$ emerge --info | grep 'CONFIG_PROTECT='

Flere informationer omkring Portages opsætningsfilbeskyttelse er tilgængeligt igennem emerge:

Kode oversigt 3.2: Flere informationer omkring opsætningsfilbeskyttelse

$ emerge --help config

At udelukke foldere

For at 'afbeskytte' specifikke underfoldere af beskyttede placeringer kan du bruge CONFIG_PROTECT_MASK-variablen.

2.d. Valgmuligheder af hentning

Server-placeringer

Når de forespurgte informationer eller data ikke er tilgængelige på dit system, vil Portage hente det fra Internettet. Server-placeringerne til de forskellige informationer og data-kanaler er defineret af de følgende variabler:

  • GENTOO_MIRRORS definerer en liste af server-placeringer, som indeholder kildekoder (distfiles)
  • PORTAGE_BINHOST definerer en specifik server-placering, som indeholder præ-byggede pakker til dit system

En tredje indstilling involverer placeringen af rsync-serveren, som du kan bruge, når du opdaterer dit Portage-træ:

  • SYNC definerer en specifik server, som Portage bruger til at fange Portage-træet fra

GENTOO_MIRRORS- og SYNC-variablerne kan blive indstillet automatisk igennem mirrorselect-programmet. Du skal først emerge mirrorselect før du kan bruge den. For flere informationer, se mirrorselects onlinehjælp:

Kode oversigt 4.1: Flere informationer om mirrorselect

# mirrorselect --help

Hvis dit miljø kræver at du bruger en proxy-server, kan du bruge HTTP_PROXY-, FTP_PROXY- og RSYNC_PROXY-variablerne til at erklære en proxy-server.

Fangst-kommandoer

Når Portage skal fange kildekoder, bruger den wget som standard. Du kan ændre dette igennem FETCHCOMMAND-variablen.

Portage har mulighed for at genoptage hentningen af delvist hentet kildekode. Den bruger wget som standard, men dette kan blive ændret igennem RESUMECOMMAND-variablen.

Vær sikker at dine FETCHCOMMAND og RESUMECOMMAND gemmer kildekoderne i den rigtige placering. Inde i variablerne bør du bruge \${URI} og \${DISTDIR} for at pege til henholdsvis kildekodernes placering og distfiles-placering.

Du kan også definere protokol-specifikke håndteringer med FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP osv.

Rsync-indstillinger

Du kan ikke ændre rsync-kommandoen, som Portage bruger til at opdatere Portage-træet, men du kan indstille nogle variabler, der er relateret til rsync-kommandoen:

  • RSYNC_EXCLUDEFROM peger på en fil, som har en liste over de pakker og/eller kategorier som rsync bør ignorere igennem opdateringsprocessen.
  • RSYNC_RETRIES definerer hvor mange gange rsync bør prøve at forbinde til mirror peget på igennem SYNC-variablen før den opgiver. Denne variabel er indstillet som standard til 3.
  • RSYNC_TIMEOUT definerer antallet af sekunder en rsync-forbindelse er død før rsync ser en forbindelse som timed-out. Denne variabel er indstillet som standard til 180, men opkaldsbrugere eller folk med langsomme computere bør nok indstille denne til 300 eller højere.

4.e. Gentoo-opsætning

Software gren valg

Du kan ændre din standard-gren med ACCEPT_KEYWORDS-variablen. Den er som standard sat til din arkitekturs stabile gren. Flere informationer omkring Gentoos grene kan blive fundet i næste kapitel.

Portages egenskaber

Du kan aktivere specifikke egenskaber til Portage igennem FEATURES-variablen. Portages egenskaber blev diskuteret i tidligere kapitler, som f.eks. Portages egenskaber.

2.f. Portages adfærd

Ressourcehåndtering

Med PORTAGE_NICENESS-variablen kan du forstørre eller formindske nice-værdien Portage kører med. PORTAGE_NICENESS-værdien er tilføjet til den nuværende nice-værdi.

For flere informationer omkring nice-værdier, se nices man-sider:

Kode oversigt 6.1: Flere informationer om nice

$ man nice

Output-adfærd

NOCOLOR, som standard er sat til "false", definerer om Portage bør deaktivere brugen af farvet output.

3. At blande software grene

3.a. Brug af software-grene

Den stabile gren

ACCEPT_KEYWORDS-variablen definerer hvilken software-gren, som du bruger på dit system. Den er som standard sat til den stabile software-gren til din arkitektur, f.eks. x86.

Vi anbefaler at du kun bruger den stabile gren. Hvis du dog ikke har en stor interesse i stabilitet og du vil hjælpe Gentoo ved at sende fejlrapporter til http://bugs.gentoo.org, så kan du læse videre.

Test-grenen

Hvis du vil bruge nyere software, kan du prøve at bruge test-grenen i stedet for. For at få Portage til at bruge test-grenen, tilføj en ~ foran din arkitektur.

Test-grenen er præcis, som den selv hedder - Test. Hvis en pakker er i test, betyder det at udviklerne mener at den er funktionel, men den er ikke blevet testet nok. Du kan dog være den første der finder en specifik fejl i pakken, hvor du bør indsende en fejlrapport for at udviklerne ved om det.

For f.eks. at vælge test-grenen til x86-arkitekturen, rediger /etc/make.conf og skriv:

Kode oversigt 1.1: Indstilling af ACCEPT_KEYWORDS-variabelen

ACCEPT_KEYWORDS="~x86"

Hvis du opdaterer dit system nu, vil du finde ud af at der er masser af pakker, som skal opdateres. Husk dog: når du har opdateret dit system til at bruge test-grenen, er der normalt ikke nogen let metode at gå tilbage til en stabil, officiel gren (selvfølgelig undtagen ved brug af backup).

3.b. Blanding af stabil og test-gren

package.keywords-filen

Du kan altid få Portage til at tillade test-gren til specifikke pakker og stadig bruge den stabile gren til resten af systemet. For at gøre dette, tilføj pakke-kategori og -navn, som du vil bruge til test-grenen i /etc/portage/package.keywords. F.eks. for at bruge test-grenen til gnumeric:

Kode oversigt 2.1: /etc/portage/package.keywords indstilling til gnumeric, fuldstændig linie

app-office/gnumeric ~x86

Test af specifikke versioner

Hvis du ønsker at bruge en specifik software-version fra test-grenen, men du ikke ønsker at Portage bruger test-grenen til underliggende versioner, kan du tilføje versionen i package.keywords-filen. I dette tilfælde, skal du bruge =. Du kan også skrive en versionsmængde ved brug af <=, <, > eller >=.

I alle tilfælde, hvis du tilføjer versionsinformationer, skal du bruge sådan et tegn. Hvis du ikke bruger versionsinformationer, kan du ikke bruge sådan et tegn.

I det følgende eksempel, spørger vi Portage om at acceptere gnumeric-1.2.13:

Kode oversigt 2.2: Aktivering af en specifik gnumeric-version

=app-office/gnumeric-1.2.13 ~x86

3.c. Brug af maskerede pakker

package.unmask-filen

Gentoo-udviklere har ikke support på brugen af disse filer. Brug venligst forsigtighed, når du prøver at udnytte dette. Supportkrav relateret til package.unmask og/eller package.mask vil ikke blive besvaret. Du er blevet advaret.

Hvis en pakke er markeret som maskeret af Gentoo-udviklere, og du stadigvæk ønsker at bruge denne, selvom du kender meningen med denne, som skrevet i package.mask-filen (placeret i /usr/portage/profiles som standard), tilføj den eksakt samme linie i /etc/portage/package.unmask.

F.eks. hvis =net-mail/hotwayd-0.8 er markeret, kan du afmaskere den ved at tilføje den eksakte samme linie i package.unmask-filen:

Kode oversigt 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

package.mask-filen

Når du ikke ønsker at Portage tager en specifik pakke eller specifik version af en pakke i brug, kan du maskere den selv, ved at tilføje den tilsvarende linie i /etc/portage/package.mask.

Endnu et eksempel er hvis du ikke vil have at Portage installerer nyere kerne-kildekoder end gentoo-sources-2.6.8.1, kan du tilføje følgende linie til package.mask:

Kode oversigt 3.2: /etc/portage/package.mask eksempel

>sys-kernel/gentoo-sources-2.6.8.1

4. Flere Portage værktøjer

4.a. etc-update

etc-update er et værktøj som hjælper ved opdatering af ._cfg0000_<navn>-filer. Den leverer en interaktivt merge-opsætning og kan også auto-merge trivielle ændringer. ._cfg0000_<navn>-filer bliver generet af Portage når den vil gemme en fil i en folder beskyttet af CONFIG_PROTECT-variablen.

Kørsel af etc-update er pænt ligefrem:

Kode oversigt 1.1: Kørsel af etc-update

# etc-update

Efter en merge stopper det nemme, du vil nu få vist en liste over beskyttede filer, som venter på en opdatering. I bunden er du hilst af følgende muligheder:

Kode oversigt 1.2: etc-update valgmuligheder

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'):

Hvis du taster -1, vil etc-update afslutte uden at have udført nogen ændringer. Hvis du taster -3 eller -5, vil alle listede opsætningsfiler blive overskrevet af nyere versioner. Det er derfor meget vigtigt at først vælge de opsætningsfiler, som ikke skal opdateres automatisk. Det er simpelthen et spørgsmål om at taste det nummer placeret til venstre ved opsætningsfilen.

Som et eksempel, vælg opsætningsfilen /etc/pear.conf:

Kode oversigt 1.3: Opdatering af en specifik opsætningsfil

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

Du kan nu se ændringerne imellem de to filer. Hvis du tror at den opdaterede opsætningsfil kan blive brugt uden problemer, tast 1. Hvis du mener at den opdaterede opsætningsfil ikke er nødvendig, eller ikke leverer noget nyt og brugbart, tast 2. Hvis du interaktivt vil opdatere din opsætningsfil, tast 3.

Der er ikke nogen grund til at fortsætte med at forklare den interaktive merge her. For helhedens skyld, vi vil vise en liste over de mulige kommandoer du kan bruge imens du interaktivt ordner de to filer. Du bliver hilst med to linier (den originale og det nye forslag) og en prompt, hvor du kan taste en af følgende kommandoer:

Kode oversigt 1.4: Kommandoer som er tilgængelige ved interaktiv merge

ed:     Rediger, så brug begge versioner, begge dekoreret med en header.
eb:     Rediger, så brug begge versioner.
el:     Rediger, så brug den venstre version.
er:     Rediger, så brug den højre version.
e:      Rediger den nye version.
l:      Brug den venstre version.
r:      Brug den højre version.
s:      I lille grad inkluder lignende linier.
v:      I stor grad inkluder lignende linier.
q:      Afslut.

Når du afsluttet opdateringen af vigtige opsætningsfiler, kan du nu opdatere resten af opsætningsfilerne automatisk. etc-update vil afslutte, hvis den ikke finder flere opdaterbare opsætningsfiler.

4.b. dispatch-conf

Ved brug af dispatch-conf kan du merge opdateringer til dine opsætningsfiler, imens du holder øje med ændringerne. dispatch-conf gemmer forskellene imellem opsætningsfilerne, som patches eller ved brug af RCS-revisionssystemet.

Ligesom etc-update, kan du spørge om beholde opsætningsfiler som de er, bruge den nye opsætningsfiler, redigere den nuværende og merge ændringer interaktivt. Dog har dispatch-conf også nogle yderligere spændende egenskaber:

  • Automatisk merge opsætningsfilsopdateringer, som kun indeholder opdateringer til kommentarer
  • Automatisk merge opsætningsfiler, som kun er forskelligt pga. 'luft' (whitespace).

Vær sikker på at du redigerer /etc/dispatch-conf.conf først og opretter folderen refereret ved archive-dir-variablen.

For flere informationer, tjek dispatch-conf man-siderne ud:

Kode oversigt 2.1: Læsning af dispatch-conf man-sider

$ man dispatch-conf

4.c. quickpkg

Med quickpkg kan du oprette arkiver af pakker, som allerede er merget på dit system. Disse arkiver kan blive brugt som præbyggede pakker. Kørsel af quickpkg er ligefrem: tilføj bare navnene på de pakker som du vil arkivere.

F.eks. for at arkivere curl, arts og procps:

Kode oversigt 3.1: Eksempel på brug af quickpkg

# quickpkg curl arts procps

De præbyggede pakker vil blive gemt i /usr/portage/packages/All. Symbolske henvisninger peger på disse pakker, som er i /usr/portage/packages/<kategori>.

5. Afvigelse fra det officielle træ

5.a. Brug af Portage-træets undersæt

Udelukkelse af pakker/kategorier

Du kan selektivt opdatere specifikke kategorier/pakker og ignorere de andre kategorier/pakker. Vi opnår dette ved at få rsync til at udelukke kategorier/pakker igennem emerge --sync-trinet.

Som standard vil rsync tjekke indholdet af /etc/portage/rsync_excludes (hvis den eksisterer), som indeholder de kategorier eller pakker, som du ikke ønsker at rsync opdaterer.

Noter dog at dette kan foranlede afhængighedsproblemer, idet nye tilladte pakker, kan afhænge af nye, men udelukkede pakker.

5.b. Tilføjelse af uofficielle Ebuilds

Definering af Portage Overlay Folderen

Du kan få Portage til at bruge ebuilds, som ikke officielt er tilgængelig igennem Portage-træet. Opret en ny folder (f.eks. /usr/local/portage), hvor du gemmer tredje-parts ebuilds. Brug samme folder-struktur, som i det officielle Portage-træ!

Så definer PORTDIR_OVERLAY i /etc/make.conf og få den til at pege på den sidstenævnte folder. Når du nu bruger Portage, vil den også tage disse ebuilds i brug, uden at fjerne/overskrive disse ebuilds næste gang, du kører emerge --sync.

5.c. Ikke-Portage håndteret software

Brug af Portage med selv-håndteret software

I nogle tilfælde vil du ønske at opsætte, installere og håndtere software selv, uden at have Portage til at automatisk lave processen for dig, selv endda når Portage kan levere disse softwaretitler. Kendte tilfælde er kerne-kildekoder og nvidia-drivere. Du kan opsætte Portage, så den ved at en specifik pakke er installeret manuelt på dit system. Denne proces er kaldet injecting og understøttet af Portage igennem /etc/portage/profile/package.provided-filen.

F.eks. hvis du vil infomere Portage om vanilla-sources-2.6.11.6, som du har manuelt installeret, tilføj den følgende linie til /etc/portage/profile/package.provided:

Kode oversigt 3.1: package.provided eksempel-linie

sys-kernel/vanilla-sources-2.6.11.6

6. Ebuild Applikationen

6.a. Emerge og Ebuild

ebuild-programmet er en low-level grænseflade til Portage systemet. Ved brug af dette program, kan du udføre specifikke handlinger til en given ebuild. F.eks. kan du udføre de individuelle merge-trin selv.

Brugen af ebuild er mere til udviklingsopgaver; flere informationer omkring ebuild kan derfor findes i Udviklernes håndbog (på engelsk). Dog, vil vi forklare hvilke instanser af en ebuild, der bliver påkaldt af Portage igennem emerge-processen for en specifik softwaretitel og hvordan man påkalder de føropsætningstrin, som nogle ebuilds tillader dig at udføre.

6.b. Manuel installation af software

At hente kilder samt checksum

Når du påkalder en ebuild til en given ebuild-fil, vil den verificere om checksummen af alle involverede filer er lig med dem der er givet i den medfølgende Manifest eller files/digest-<navn>-<version>-fil. Dette sker efter at kilderne er hentet.

For at hente kilderne ved brug af ebuild, kør da:

Kode oversigt 2.1: At hente kildekode

# ebuild sti/til/ebuild fetch

Hvis ebuildens md5sum ikke passer sammen med den, der er vist i Manifest-filen, eller en af de hentede kildekoder ikke passer med dem vist i files/digest-<pakke>-filen, vil du modtage en fejl lignende til dette:

Kode oversigt 2.2: Ebuild checksum-fejl

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

Den underliggende linie vil forklare den fejlbare fil.

Hvis du er sikker på, at de kildekoder du har fanget og ebuilden i sig selv er valid, kan du regenerere Manifest og digest-<package>-filen ved brug af ebuilds digest-funktionalitet:

Kode oversigt 2.3: Regenerering af Manifest og digest

# ebuild sti/tíl/ebuild digest

Udpakning af kildekode

For at pakke kildekode ud i /var/tmp/portage (eller en anden placering du har specificeret i /etc/make.conf), kør da ebuilds unpack-funktionalitet:

Kode oversigt 2.4: Udpakning af kildekoder

# ebuild sti/til/ebuild unpack

Dette vil udføre ebuilds src_unpack() funktion (der som standard er en normal udpakning, hvis ingen src_unpack() funktion er defineret). Det er også i dette trin, at alle nødvendig patches er tilføjet.

Samling af kildekoderne

Det næste trin i emerge-processen er at samle kildekoderne. ebuilds kompilerings-funktionalitet tager sig af dette trin ved at udføre src_compile() funktionen i ebuilden. Dette inkluderer også 'configure'-trin, hvis de tilhører titlen.

Kode oversigt 2.5: Samling af kildekoderne

# ebuild sti/til/ebuild compile

Du bør redigere ebuilds src_compile() funktion, hvis du ønsker at ændre samlingsinstruktionerne. Dog kan du også snyde Portage til at tro at ebuild-programmet har udført samlingstrinnet. Kør alle nødvendige kommandoer selv, og opret en tom fil kaldet .compiled i 'working'-folderen:

Kode oversigt 2.6: At informere Portage om de færdiggjorte samlingsjobs

# touch .compiled

Installation af filer i en midlertidig placering

I det næste trin vil Portage installere alle de nødvendige filer til en midlertidig placering. Denne folder vil indeholde alle filer, som skal emerges til det rigtige filsystem. Du kan gøre dette ved at køre ebuilds install-funktionalitet, som udfører ebuilds src_install() funktion:

Kode oversigt 2.7: Installation af filerne

# ebuild sti/til/ebuild install

Emerge af filer til det direkte filsystem

Det sidste trin er at merge alle filerne til det direkte filsystem og registrere disse i Portages backend. ebuild kalder dette trin "qmerge" og involverer disse følgende trin:

  • Udføre pkg_preinst() funktionen, hvis specificeret
  • Kopiere alle filer til det direkte filsystem
  • Registrere filerne i Portages backend
  • Udføre pkg_postinst() funktionen, hvis specificeret

Kør ebuilds qmerge-funktionalitet for at udføre disse trin:

Kode oversigt 2.8: Emerge af filer til det direkte filsystem

# ebuild sti/til/ebuild qmerge

Rensning af den midlertidige folder

Endeligt kan du rense hele den midlertidige folder ved brug af ebuilds clean-funktionalitet:

Kode oversigt 2.9: Rensning af den midlertidige folder

# ebuild sti/til/ebuild clean

6.c. Yderligere Ebuild-egenskaber

Kørsel af alle emerge-relaterede kommandoer

Ved brug af ebuilds merge-funktionalitet, kan du køre fetch, unpack, compile, install og qmerge-kommandoerne på én gang:

Kode oversigt 3.1: Installation af software

# ebuild sti/til/ebuild merge

Udførelse af opsætningsaktiviteter

Nogle programmer har også instruktioner, som opsætter pakken yderligere på dit system. Disse instruktioner kan være interaktive og kan derfor ikke blive udført automatisk. For at køre disse opsætningstrin, som er placeret i ebuilds (valgmulige) config() funktion, brug ebuilds config-funktionalitet:

Kode oversigt 3.2: Opsætning af en package

# ebuild sti/til/ebuild config

Bygning af en (RPM) pakke

Du kan instruere Portage til at oprette en binær pakke af en ebuild eller endda en RPM-fil. Brug ebuilds package- eller rpm-funktionalitet for at oprette disse arkiver. Der er dog nogle få forskelle imellem disse to funktionaliteter:

  • package-funktionaliteten minder meget om merge-funktionaliteten, undtagen alle nødvendige trin (fetch, unpack, compile, install) før oprettelsen af pakken
  • rpm-funktionaliteten bygger en RPM-pakke fra de filer, oprettet efter at have kørt ebuilds install-funktionalitet

Kode oversigt 3.3: Oprettelse af pakker

(Til en Portage-kompatibel binær pakke)
# ebuild sti/til/ebuild package

(Til en RPM-pakke)
# ebuild sti/til/ebuild rpm

Den oprettede RPM-fil indeholder dog ikke ebuilds afhængighedsinformationer.

6.d. Flere informationer

Læs venligst de følgende man-sider for flere informationer omkring Portage, ebuild-programmet og ebuild-filer:

Kode oversigt 4.1: Man-sider

$ man portage    (Portage selv)
$ man emerge     (emerge-kommandoen)
$ man ebuild     (ebuild-kommandoen)
$ man 5 ebuild   (ebuild filsyntaks)

Du kan også finde flere udviklingsrelaterede informationer i Udviklerens håndbog (på engelsk).

Udskriv

Opdateret 21. september 2005

The original version of this document was last updated May 11, 2013

Opsummering: Dette er Gentoo-håndbogen, som er en bestræbelse på at centralisere informationer omkring Gentoo/Linux.

Sven Vermeulen
Forfatter

Roy Marples
Forfatter

Daniel Robbins
Forfatter

Chris Houser
Forfatter

Jerry Alexandratos
Forfatter

Seemant Kulleen
Gentoo x86 udvikler

Tavis Ormandy
Gentoo Alpha udvikler

Jason Huebel
Gentoo AMD64 udvikler

Guy Martin
Gentoo HPPA udvikler

Pieter Van den Abeele
Gentoo PPC udvikler

Joe Kallar
Gentoo SPARC udvikler

John P. Davis
Redaktør

Pierre-Henri Jondot
Redaktør

Eric Stockbridge
Redaktør

Rajiv Manglani
Redaktør

Jungmin Seo
Redaktør

Stoyan Zhekov
Redaktør

Jared Hudson
Redaktør

Colin Morey
Redaktør

Jorge Paulo
Redaktør

Carl Anderson
Redaktør

Jon Portnoy
Redaktør

Zack Gilburd
Redaktør

Jack Morgan
Redaktør

Benny Chuang
Redaktør

Erwin
Redaktør

Stuart Longland
Redaktør

Joshua Kinard
Redaktør

Stuart Longland
Redaktør

Tobias Scherbaum
Redaktør

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Bidrager

Jesper Brodersen
Oversætter, Korrektur

Arne Mejlholm
Oversætter, Korrektur

Frans Sohn Frøkjær-Jensen
Oversætter, Korrektur

Morten Fangel
Oversætter, Korrektur

Esben Bach
Oversætter, Korrektur

Simon Holm Thøgersen
Oversætter, Korrektur

Donate to support our development efforts.

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