LFS Version 9.1 Norsk

Linux From Scratch Version 9.1 oversatt til Norsk. Har du spørsmål eller kommentarer angående LFS ta kontakt: webmaster AT gusse D0T no Lisensene er ikke oversatt til Norsk fordi det er vanskelig å få frem riktig betydning når de oversettes. Created by Gerard Beekmans Managing Editor: Bruce Dubbs Copyright © 1999-2020 Gerard Beekmans

Forord

Det er alltid mange måter å utføre en enkelt oppgave på. Det samme kan sies om Linux-distribusjoner. Mange har eksistert gjennom tidene. Noen eksisterer fremdeles, noen har omgjort til noe annet, andre er blitt henvist til minnene våre.

Forord

i. Forord

Min reise for å lære og bedre forstå Linux begynte allerede i 1998. Jeg hadde nettopp installert min første Linux-distribusjon og hadde raskt blitt fascinert av hele konseptet og filosofien bak Linux.

Det er alltid mange måter å utføre en enkelt oppgave på. Det samme kan sies om Linux-distribusjoner. Mange har eksistert gjennom tidene. Noen eksisterer fremdeles, noen har omgjort til noe annet, andre er blitt henvist til minnene våre. De gjør alle ting annerledes for å tilpasse behovene til målgruppen. Fordi det eksisterer så mange forskjellige måter å oppnå det samme sluttmålet, begynte jeg å innse at jeg ikke lenger måtte begrenses av noen implementering. Før vi oppdaget Linux, stilte vi ganske enkelt opp problemer i andre operativsystemer, da du ikke hadde noe valg. Det var hva det var, enten du likte det eller ikke. Med Linux begynte valgbegrepet å dukke opp. Hvis du ikke likte noe, var du fri, til og med oppmuntret, til å endre det.

Jeg prøvde en rekke distribusjoner og kunne ikke bestemme meg for noen. De var flotte systemer i seg selv. Det var ikke et spørsmål om rett og galt lenger. Det hadde blitt et spørsmål om personlig smak. Med alt dette valget tilgjengelig, ble det tydelig at det ikke ville være et eneste system som ville være perfekt for meg. Så jeg siktet til å lage mitt eget Linux-system som fullt ut ville samsvare med mine personlige preferanser.

For virkelig å gjøre det til mitt eget system, bestemte jeg meg for å sette sammen alt fra kildekode i stedet for å bruke forhåndskompilerte binære pakker. Dette "perfekte" Linux-systemet ville ha styrken til forskjellige systemer uten deres opplevde svakheter. Til å begynne med var ideen ganske skremmende. Jeg forble forpliktet til ideen om at et slikt system kunne bygges.

Etter å ha sortert gjennom problemer som sirkulære avhengigheter og feil i kompileringstid, bygde jeg endelig et spesialbygget Linux-system. Det var fullt operativt og perfekt brukbart som alle de andre Linux-systemene der ute den gangen. Men det var min egen skapelse. Det var veldig tilfredsstillende å ha satt sammen et slikt system selv. Det eneste bedre hadde vært å lage hvert programvare selv. Dette var den nest beste tingen.

Da jeg delte mine mål og erfaringer med andre medlemmer av Linux-samfunnet, viste det seg at det var en vedvarende interesse for disse ideene. Det ble raskt klart at slike spesialbygde Linux-systemer ikke bare tjener til å oppfylle brukerspesifikke krav, men også tjene som en ideell læringsmulighet for programmerere og systemadministratorer for å forbedre deres (eksisterende) Linux-ferdigheter. Av denne utvidede interessen ble Linux From Scratch Project født.

Denne Linux From Scratch-boken er den sentrale kjernen rundt det prosjektet. Det gir bakgrunnen og instruksjonene som er nødvendige for deg å designe og bygge ditt eget system. Selv om denne boken inneholder en mal som vil resultere i et korrekt fungerende system, står du fritt til å endre instruksjonene for å tilpasse ditt eget system, noe som til dels er en viktig del av dette prosjektet. Du forblir i kontroll; vi gir bare en hjelpende hånd for å komme i gang på din egen reise.

Jeg håper inderlig at du vil ha det veldig fint med å jobbe med ditt eget Linux From Scratch-system og nyte de mange fordelene ved å ha et system som virkelig er ditt eget.

--
Gerard Beekmans
gerard@linuxfromscratch.org

  Hjem Neste
Forord

ii. Publikum

Det er mange grunner til at du ønsker å lese denne boken. Et av spørsmålene mange reiser er, "hvorfor gå gjennom alt bryet med å manuelt bygge et Linux-system fra bunnen av når du bare kan laste ned og installere et eksisterende?"

En viktig grunn til at dette prosjektet eksisterer, er å hjelpe deg å lære hvordan et Linux-system fungerer fra innsiden og utsiden. Å bygge et LFS-system hjelper til med å demonstrere hva som Linux består av, og hvordan ting fungerer sammen og avhenger av hverandre. Noe av det beste som denne læringsopplevelsen kan gi, er muligheten til å tilpasse et Linux-system som passer dine egne unike behov.

En annen viktig fordel med LFS er at det lar deg ha mer kontroll over systemet uten å stole på noen annens Linux-implementering. Med LFS er du i førersetet og dikterer alle aspekter av systemet.

LFS lar deg lage veldig kompakte Linux-systemer. Når du installerer vanlige distribusjoner, blir du ofte tvunget til å installere mange programmer som sannsynligvis aldri blir brukt eller forstått. Disse programmene sløser med ressurser. Du kan hevde at med dagens harddisk og CPUer er slike ressurser ikke lenger et hensyn. Noen ganger er du imidlertid fremdeles begrenset av størrelseshensyn om ikke annet. Tenk på oppstartbare CD-er, USB-pinner og innebygde systemer. Dette er områder der LFS kan være fordelaktig.

En annen fordel med et spesialbygget Linux-system er sikkerhet. Ved å kompilere hele systemet fra kildekode, har du fullmakt til å kontrollere alt og bruke alle ønskede sikkerhetsoppdateringer. Det er ikke lenger nødvendig å vente på at noen andre skal samle binære pakker som fikser et sikkerhetshull. Med mindre du undersøker oppdateringen og implementerer den selv, har du ingen garanti for at den nye binære pakken ble bygget riktig og løser problemet tilstrekkelig.

Målet med Linux From Scratch er å bygge et komplett og brukbart fundamentnivå-system. Hvis du ikke ønsker å bygge ditt eget Linux-system fra bunnen av, kan du likevel ha fordel av informasjonen i denne boken.

Det er for mange andre gode grunner til å bygge ditt eget LFS-system til å liste dem alle her. Til slutt er utdanning uten tvil den kraftigste av årsakene. Når du fortsetter med LFS-opplevelsen din, vil du oppdage kraften som informasjon og kunnskap virkelig gir.

Forrige Hjem Neste
Forord

iii. LFS Målarkitekturer

De primære målarkitekturene til LFS er AMD / Intel x86 (32-biters) og x86_64 (64-biters) CPU-er. På den annen side er instruksjonene i denne boka også kjent for å fungere, med noen modifikasjoner, med Power PC og ARM CPUer. For å bygge et system som bruker en av disse prosessorene, er hovedforutsetningen, i tillegg til de på neste side, et eksisterende Linux-system som en tidligere LFS-installasjon, Ubuntu, Red Hat / Fedora, SuSE eller annen distribusjon som er målrettet arkitekturen du har. Legg også merke til at en 32-bit distribusjon kan installeres og brukes som et vertssystem på en 64-bit AMD / Intel-datamaskin.

For å bygge LFS er gevinsten av å bygge på et 64-biters system sammenlignet med et 32-biters system minimal. For eksempel, i en testbygging av LFS-9.1 på et Core i7-4790 CPU-basert system, ved bruk av 4 kjerner, ble følgende statistikk målt:

Arkitektur Byggetid Størrelse
32-bit 239.9 minutter 3.6 GB
64-bit 233.2 minutter 4.4 GB

Som du ser, på den samme maskinvaren er 64-biters build bare 3% raskere og er 22% større enn 32-biters build. Hvis du planlegger å bruke LFS som en LAMP-server, eller en brannmur, kan en 32-biters CPU i stor grad være tilstrekkelig. På den annen side trenger flere pakker i BLFS nå mer enn 4 GB RAM for å bygges og / eller for å kjøre, slik at hvis du planlegger å bruke LFS som skrivebord, anbefaler LFS-forfatterne å bygge videre på et 64-biters system.

Standard 64-biters som er resultat fra LFS, regnes som et "rent" 64-biters system. Det vil si at den bare støtter 64-bit kjørbare filer. Å bygge et "multi-lib" -system krever kompilering av mange applikasjoner to ganger, en gang for et 32-biters system og en gang for et 64-biters system. Dette støttes ikke direkte på LFS fordi det vil forstyrre det pedagogiske målet om å gi instruksjonene som trengs for et enkelt Linux-system. Noen LFS / BLFS-redaktører har en kopi med LFS for multilib, som er tilgjengelig på http://www.linuxfromscratch.org/~thomas/multilib/index.html. Men det er et avansert emne.

Forrige Hjem Neste
Forord

iv. Forutsetninger

Å bygge et LFS-system er ikke en enkel oppgave. Det krever et visst nivå av eksisterende kunnskap om Unix systemadministrasjon for å løse problemer og korrekt utføre kommandoene som er oppført. Som et absolutt minimum, bør du allerede ha muligheten til å bruke kommandolinjen (skallet) til å kopiere eller flytte filer og kataloger, liste katalog- og filinnhold, og endre gjeldende katalog. Det forventes også at du har en rimelig kunnskap om bruk og installasjon av Linux-programvare.

Fordi LFS-boken forutsetter minst dette grunnleggende ferdighetsnivået, er det lite sannsynlig at de forskjellige støtteforumene for LFS vil kunne gi deg mye hjelp på disse områdene. Du vil oppdage at spørsmålene dine om slik grunnleggende kunnskap sannsynligvis vil bli ubesvart, eller at du ganske enkelt vil bli henvist til LFSs viktige forhåndsleseliste.

Før du bygger et LFS-system, anbefaler vi å lese følgende:

Forrige Hjem Neste
Forord

v. LFS og standarder

Mange er ikke enige i kravene fra LSB. Hovedhensikten med å definere den er å sikre at proprietær programvare kan installeres og kjøres ordentlig på et kompatibelt system. Siden LFS er kildebasert, har brukeren fullstendig kontroll over hvilke pakker som ønskes, og mange velger å ikke installere noen pakker som er spesifisert av LSB.

Det er mulig å lage et komplett LFS-system som er i stand til å bestå LSB-sertifiseringstester, men ikke uten mange ekstra pakker som er utenfor LFS-omfanget. Disse tilleggspakkene har installasjonsinstruksjoner i BLFS.

Pakker levert av LFS nødvendig for å tilfredsstille LSB-kravene

LSB Core: Bash, Bc, Binutils, Coreutils, Diffutils, File, Findutils, Gawk, Grep, Gzip, M4, Man-DB, Ncurses, Procps, Psmisc, Sed, Shadow, Tar, Util-linux, Zlib
LSB Desktop:Ingen Ingen
LSB Runtime Språk: Perl
LSB Imaging: Ingen
LSB Gtk3 og LSB Grafikk (prøvebruk): Ingen

Pakker levert av BLFS nødvendig for å tilfredsstille LSB-kravene

LSB Core: At, Batch (a part of At), Cpio, Ed, Fcrontab, LSB-Tools, NSPR, NSS, PAM, Pax, Sendmail (or Postfix or Exim), time
LSB Desktop: Alsa, ATK, Cairo, Desktop-file-utils, Freetype, Fontconfig, Gdk-pixbuf, Glib2, GTK+2, Icon-naming-utils, Libjpeg-turbo, Libpng, Libtiff, Libxml2, MesaLib, Pango, Xdg-utils, Xorg
LSB Runtime Språk: Python, Libxml2, Libxslt
LSB Imaging: CUPS, Cups-filters, Ghostscript, SANE
LSB Gtk3 og LSB Grafikk (prøvebruk): GTK+3

Pakker som ikke er levert av LFS eller BLFS, som er nødvendige for å tilfredsstille LSB-kravene

LSB Core: Ingen
LSB Desktop: Qt4 (men Qt5 er med)
LSB Runtime Språk: Ingen
LSB Imaging: Ingen
LSB Gtk3 og LSB Grafikk (prøvebruk): Ingen
Forrige Hjem Neste
Forord

vi. Begrunnelse for pakker i boka

Som tidligere nevnt, er målet med LFS å bygge et komplett og brukbart fundamentnivå-system. Dette inkluderer alle pakker som er nødvendige for å gjenskape seg, samtidig som de gir en relativt minimal base å tilpasse et mer komplett system basert på valg av bruker. Dette betyr ikke at LFS er det minste systemet som er mulig. Flere viktige pakker er inkludert som ikke er strengt nødvendig. Listene nedenfor dokumenterer begrunnelsen for hver pakke i boken.

Forrige Hjem Neste
Forord

vii. Typografi

For å gjøre ting lettere å følge, er det noen få typografiske konvensjoner brukt i hele denne boken. Denne delen inneholder noen eksempler på det typografiske formatet som finnes i Linux From Scratch.

./configure --prefix=/usr

Denne formen for tekst er designet for å bli skrevet nøyaktig slik den vises, med mindre annet er angitt i den omkringliggende teksten. Det brukes også i forklaringsdelene for å identifisere hvilke av kommandoene det blir referert til.

I noen tilfeller utvides en logisk linje til to eller flere fysiske linjer med en omvendt skråstrek på slutten av linjen.

CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
--prefix=/tools --disable-nls --disable-werror

Vær oppmerksom på at den omvendte skråstreken må følges av en øyeblikkelig retur. Andre mellomromstegn som mellomrom eller tabulator skaper feil resultater.

install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'

Denne formen for tekst (tekst med fast bredde) viser skjermutgang, vanligvis som et resultat av utstedte kommandoer. Dette formatet brukes også til å vise filnavn, for eksempel /etc/ld.so.conf.

uthevet

Dette formatet brukes til hyperkoblinger både i LFS-samfunnet og til eksterne sider. Det inkluderer HOWTO-er, nedlastingssteder og nettsteder.

http://www.linuxfromscratch.org/

cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF

Dette formatet brukes når du oppretter konfigurasjonsfiler. Den første kommandoen forteller systemet å opprette filen $LFS/etc/group fra hva som er skrevet på de følgende linjene til sekvensen End Of File (EOF) er funnet. Derfor er hele seksjonen vanligvis skrevet som sett.

Merk at kommentarer ikke blir oversatt i filer. Det er en god praksis å bruke engelsk i kommentarer slik at det blir forstått av flere. Dette er gjengs praksis i Linux miljøet å bruke engelsk i kommentarer og ikke bruke ditt eget språk.

<Byttet tekst>

Dette formatet brukes til å innkapsle tekst som ikke skal skrives som sett eller for kopiering og liming.

[EKSTRA TEKST]

Dette formatet brukes til å innkapsle tekst som er valgfri.

passwd(5)

Dette formatet brukes til å referere til en spesifikk manual (man) -side. Antallet innenfor parenteser indikerer en spesifikk seksjon i håndbøkene. For eksempel har passwd to man sider. I henhold til installasjonsinstruksjonene for LFS vil disse to man sidene være lokalisert på /usr/share/man/man1/passwd.1 og /usr/share/man/man5/passwd.5. Når boken bruker passwd (5) henviser den spesielt til /usr/share/man/man5/passwd.5. man passwd vil skrive ut den første man siden den finner ut som samsvarer med “passwd”, som vil være /usr/share/man/man1/passwd.1. For dette eksemplet, må du kjøre man 5 passwd for å lese den spesifikke siden du blir henvist til. Det skal bemerkes at de fleste man sider ikke har dupliserte sidenavn i forskjellige seksjoner. Derfor er man <programnavn> generelt tilstrekkelig.

Forrige Hjem Neste
Forord

viii. Struktur

Del I - Innledning

Del I forklarer noen viktige merknader om hvordan du går frem med LFS-installasjonen. Denne delen inneholder også metainformasjon om boken.

Del II - Forberedelse til bygningen

Del II beskriver hvordan du kan forberede deg på byggeprosessen — lage en partisjon, laste ned pakkene og sammenstille midlertidige verktøy.

Del III - Bygging av LFS-systemet

Del III guider leseren gjennom byggingen av LFS-systemet — kompilerer og installerer alle pakkene én etter én, setter opp oppstartsskriptene og installerer kjernen. Det resulterende Linux-systemet er grunnlaget som annen programvare kan bygges på for å utvide systemet etter ønske. På slutten av denne boken er det en brukervennlig referanse som viser alle programmene, bibliotekene og viktige filer som er installert.

Forrige Hjem Neste
Forord

ix. Errata

Programvaren som brukes til å lage et LFS-system blir kontinuerlig oppdatert og forbedret. Sikkerhetsadvarsler og feilrettinger kan bli tilgjengelige etter at LFS-boken er utgitt. For å sjekke om pakkeversjonene eller instruksjonene i denne versjonen av LFS trenger endringer for å imøtekomme sikkerhetsproblemer eller andre feilrettinger, kan du gå til http://www.linuxfromscratch.org/lfs/errata/9.1/ før du fortsetter med byggingen. Du bør legge merke til eventuelle endringer som vises og bruke dem på den relevante delen av boken når du fortsetter med å bygge LFS-systemet.

Forrige Hjem Neste

1. Introduksjon

LFS-systemet vil bli bygget ved å bruke en allerede installert Linux-distribusjon (for eksempel Debian, OpenMandriva, Fedora eller openSUSE). Dette eksisterende Linux-systemet (verten) vil bli brukt som utgangspunkt for å tilby nødvendige programmer, inkludert en kompilator, linker og shell, for å bygge det nye systemet. Velg alternativet “utvikling” under distribusjonsinstallasjonen for å få tilgang til disse verktøyene.

1. Introduksjon

1.1. Slik bygger du et LFS-system

LFS-systemet vil bli bygget ved å bruke en allerede installert Linux-distribusjon (for eksempel Debian, OpenMandriva, Fedora eller openSUSE). Dette eksisterende Linux-systemet (verten) vil bli brukt som utgangspunkt for å tilby nødvendige programmer, inkludert en kompilator, linker og shell, for å bygge det nye systemet. Velg alternativet “utvikling” under distribusjonsinstallasjonen for å få tilgang til disse verktøyene.

Som et alternativ til å installere en egen distribusjon på maskinen din, kan det være lurt å bruke en LiveCD fra en kommersiell distribusjon.

Kapittel 2 i denne boken beskriver hvordan du oppretter en ny Linux partisjon og filsystem. Dette er stedet hvor det nye LFS-systemet skal kompileres og installeres. Kapittel 3 forklarer hvilke pakker og oppdateringer som må lastes ned for å bygge et LFS-system, og hvordan du kan lagre dem på det nye filsystemet. Kapittel 4 diskuterer oppsettet av et passende arbeidsmiljø. Les kapittel 4 nøye, da det forklarer flere viktige problemer du må være klar over før du begynner å jobbe deg gjennom kapittel 5 og utover.

Kapittel 5 forklarer installasjonen av et antall pakker som vil danne den grunnleggende utviklingspakken (eller verktøykjeden) som brukes til å bygge det faktiske systemet i kapittel 6. Noen av disse pakkene er nødvendige for å løse sirkulære avhengigheter - for eksempel for å kompilere en kompilator, trenger du en kompilator.

Kapittel 5 viser deg også hvordan du bygger en første pass på verktøykjeden, inkludert Binutils og GCC (første pass betyr i utgangspunktet at disse to kjernepakkene vil bli installert på nytt). Neste trinn er å bygge Glibc, C-biblioteket. Glibc vil bli satt sammen av verktøykjetting-programmene som er bygget i første passering. Deretter vil en ny passering av verktøykjeden bygges. Denne gangen vil verktøykjeden dynamisk knyttes opp mot den nybygde Glibc. De resterende kapittel 5-pakkene er bygget med denne andre passverktøykjeden. Når dette er gjort, vil LFS-installasjonsprosessen ikke lenger være avhengig av vertsdistribusjonen, med unntak av den kjørende kjernen.

Denne innsatsen for å isolere det nye systemet fra vertsdistribusjonen kan virke overdreven. En fullstendig teknisk forklaring på hvorfor dette gjøres er gitt i kapittel 5.2, “Tekniske merknader for verktøykjede”.

I kapittel 6 er hele LFS-systemet bygget. Chroot-programmet (endre rot) brukes til å gå inn i et virtuelt miljø og starte et nytt skall hvis rotkatalog vil bli satt til LFS-partisjonen. Dette ligner veldig på å starte på nytt og instruere kjernen til å montere LFS-partisjonen som rotpartisjon. Systemet gjør ikke en omstart, men bruker i stedet chroot fordi det å lage et oppstartbart system krever ekstra arbeid som ikke er nødvendig ennå. Den største fordelen er at "chrooting" lar deg fortsette å bruke vertssystemet mens LFS bygges. Mens du venter på at pakkesamlingene skal fullføres, kan du fortsette å bruke datamaskinen som normalt.

For å fullføre installasjonen, er den grunnleggende systemkonfigurasjonen satt opp i kapittel 7, og kjernen og oppstartslasteren er satt opp i kapittel 8. Kapittel 9 inneholder informasjon om å videreføre LFS-opplevelsen utover denne boken. Etter at trinnene i denne boken er implementert, vil datamaskinen være klar til å starte på nytt i det nye LFS-systemet.

Dette er prosessen i et nøtteskall. Detaljert informasjon om hvert trinn blir diskutert i de følgende kapitlene og pakkebeskrivelsene. Elementer som kan virke kompliserte vil bli avklart, og alt vil falle på plass når du tar fatt på LFS-eventyret.

Forrige Hjem Neste
1. Introduksjon

1.2. Hva er nytt siden forrige utgivelse

Nedenfor er en liste over pakkeoppdateringer som er gjort siden forrige utgivelse av boken.

Oppgradert til:

Lagt til:

Fjernet:

Forrige Hjem Neste
1. Introduksjon

1.3. Endringslogg

Dette er versjon 9.1 av Linux From Scratch-boken, datert 1. mars 2020. Hvis denne boka er mer enn seks måneder gammel, er sannsynligvis en nyere og bedre versjon allerede tilgjengelig. For å finne ut av dette, vennligst sjekk et av speilene via http://www.linuxfromscratch.org/mirrors.html.

Nedenfor er en liste over endringer som ble gjort siden forrige utgivelse av boken.

Endringslogg oppføringer:

Forrige Hjem Neste
1. Introduksjon

1.4. Ressurser

FAQ

Hvis du under byggingen av LFS-systemet opplever feil, har spørsmål eller tror det er en skrivefeil i boken, kan du begynne med å konsultere de vanlige spørsmålene (FAQ) som ligger på http://www.linuxfromscratch.org/faq/.

E-postlister

Linuxfromscratch.org-serveren er vert for en rekke adresselister som ble brukt for utviklingen av LFS-prosjektet. Disse listene inkluderer blant annet hovedutviklings- og støttelister. Hvis vanlige spørsmål ikke løser problemet du har, vil neste trinn være å søke på adresselistene på http://www.linuxfromscratch.org/search.html.

For informasjon om de forskjellige listene, hvordan du abonnerer, arkiverer lokasjoner og tilleggsinformasjon, besøk http://www.linuxfromscratch.org/mail.html.

IRC

Flere medlemmer av LFS-samfunnet tilbyr assistanse på Internet Relay Chat (IRC). Før du bruker denne støtten, må du forsikre deg om at spørsmålet ditt ikke allerede er besvart i LFS FAQ eller arkivene for adresselister. Du finner IRC-nettverket på irc.freenode.net. Støttekanalen heter # LFS-support.

Speil nettsteder

LFS-prosjektet har en rekke speil over hele verden for å gjøre det lettere å få tilgang til nettstedet og laste ned de nødvendige pakkene. Vennligst besøk LFS-nettstedet på http://www.linuxfromscratch.org/mirrors.html for en liste over gjeldende speil.

Kontaktinformasjon

Vennligst rett alle spørsmålene og kommentarene dine til en av LFS-postlistene (se over).

Forrige Hjem Neste
1. Introduksjon

1.5. Hjelp

Hvis det oppstår et problem eller et spørsmål mens du arbeider gjennom denne boken, kan du sjekke FAQ-siden på http://www.linuxfromscratch.org/faq/#generalfaq. Spørsmål er ofte allerede besvart der. Hvis spørsmålet ditt ikke blir besvart på denne siden, kan du prøve å finne kilden til problemet. Følgende tips vil gi deg noen veiledning for feilsøking: http://www.linuxfromscratch.org/hints/downloads/files/errors.txt.

Hvis du ikke finner problemet oppført i vanlige spørsmål, kan du søke på adresselistene på http://www.linuxfromscratch.org/search.html.

Vi har også et fantastisk LFS-samfunn som er villig til å tilby hjelp gjennom postlistene og IRC (se avsnitt "Ressurser" -delen i denne boken). Imidlertid får vi flere støttespørsmål hver dag, og mange av dem kan enkelt besvares ved å gå til FAQ og ved å søke på adresselistene først. Så for at vi skal tilby den best mulig hjelpen, må du først undersøke på egen hånd. Det gjør at vi kan fokusere på de mer uvanlige støttebehovene. Hvis søkene dine ikke gir noen løsning, vennligst legg inn all relevant informasjon (nevnt nedenfor) i forespørselen om hjelp.

Ting å nevne

Bortsett fra en kort forklaring av problemet som oppleves, er de essensielle tingene å inkludere i enhver anmodning om hjelp:

Å avvike fra denne boken betyr ikke at vi ikke vil hjelpe deg. Tross alt handler LFS om personlig preferanse. Å være forhånd med eventuelle endringer i den etablerte prosedyren hjelper oss å evaluere og finne mulige årsaker til problemet ditt.

Konfigurer skriptproblemer

Hvis noe går galt mens du kjører konfigurasjonsskriptet, kan du lese filen config.log. Denne filen kan inneholde feil under konfigurering som ikke ble skrevet ut på skjermen. Inkluder de aktuelle linjene hvis du trenger å be om hjelp.

Problemer med kompilering

Både skjermutgangen og innholdet i forskjellige filer er nyttige for å bestemme årsaken til kompilasjonsproblemer. Skjermutgangen fra konfigurasjonsskriptet og kjøringen kan være nyttig. Det er ikke nødvendig å ta med hele utdataene, men inkluderer nok av relevant informasjon. Nedenfor er et eksempel på typen informasjon som skal inkluderes fra skjermutgangen fra merke:

gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2

I dette tilfellet vil mange bare inkludere den nederste delen:

make [2]: *** [make] Error 1

Dette er ikke nok informasjon til å diagnostisere problemet riktig, fordi det bare bemerker at noe gikk galt, ikke hva som gikk galt. Hele delen, som i eksemplet over, er det som bør lagres fordi den inkluderer kommandoen som ble utført og tilhørende feilmelding.

En utmerket artikkel om å be om hjelp på Internett er tilgjengelig på http://catb.org/~esr/faqs/smart-questions.html. Les og følg tipsene i dette dokumentet for å øke sannsynligheten for å få den hjelpen du trenger.

Forrige Hjem Neste

2. Forberede vertssystemet

I dette kapittelet blir vertsverktøyene som trengs for å bygge LFS, sjekket og om nødvendig installert.

2. Forberede vertssystemet

2.1. Introduksjon

I dette kapittelet blir vertsverktøyene som trengs for å bygge LFS, sjekket og om nødvendig installert. Deretter utarbeides en partisjon som vil være vert for LFS-systemet. Vi vil lage partisjonen selv, lage et filsystem på den og montere den.

Forrige Hjem Neste
2. Forberede vertssystemet

2.2. Krav til vertssystem

Vertssystemet ditt skal ha følgende programvare med de minste versjonene som er angitt. Dette bør ikke være et problem for de fleste moderne Linux-distribusjoner. Legg også merke til at mange distribusjoner vil plassere programvarehodetekster i separate pakker, ofte i form av "<pakkenavn> -utvikle" eller "<pakke-navn> -dev". Sørg for å installere dem hvis distribusjonen gir dem.

Tidligere versjoner av de listede programvarepakkene kan fungere, men har ikke blitt testet.

Bash-3.2 (/bin/sh skal være en symbolsk eller hard kobling til bash)

Binutils-2.25 (Versjoner større enn 2,34 anbefales ikke siden de ikke er testet)

Bison-2.7 (/usr/bin/yacc skal være en lenke til bison eller lite script som kjører bison)

Bzip2-1.0.4

Coreutils-6.9

Diffutils-2.8.1

Findutils-4.2.31

Gawk-4.0.1 (/usr/bin/awk skal være en lenke til gawk)

GCC-6.2 inkludert C ++ -kompilatoren, g++ (Versjoner større enn 9.2.0 anbefales ikke siden de ikke er testet)

Glibc-2.11 (Versjoner større enn 2.31 anbefales ikke siden de ikke er testet)

Grep-2.5.1a

Gzip-1.3.12

Linux Kernel-3.2

Årsaken til kjerneversjonskravet er at vi spesifiserer den versjonen når vi bygger glibc i kapittel 6 etter anbefaling fra utviklerne. Det kreves også av udev.

Hvis vertskjernen er tidligere enn 3.2, må du bytte ut kjernen med en mer oppdatert versjon. Det er to måter du kan gjøre dette på. Først, se om Linux-leverandøren din har en 3.2 eller nyere kjerne-pakke. I så fall kan det være lurt å installere det. Hvis leverandøren din ikke tilbyr en akseptabel kjerne-pakke, eller du foretrekker å ikke installere den, kan du sette sammen en kjerne selv. Instruksjoner for å sammenstille kjernen og konfigurere oppstartslasteren (forutsatt at verten bruker GRUB) ligger i kapittel 8.

M4-1.4.10

Make-4.0

Patch-2.5.4

Perl-5.8.8

Python-3.4

Sed-4.1.5

Tar-1.22

Texinfo-4.7

Xz-5.0.0

Merk at symlinkene som er nevnt ovenfor, er nødvendige for å bygge et LFS-system ved å bruke instruksjonene i denne boken. Symlinker som viser til annen programvare (for eksempel dash, mawk, etc.) kan fungere, men blir ikke testet eller støttet av LFS-utviklingsteamet, og kan kreve enten avvik fra instruksjonene eller ytterligere oppdateringer til noen pakker.

Hvis du vil se om vertssystemet ditt har alle de nødvendige versjonene, og muligheten til å kompilere programmer, kjører du følgende:

cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH

 

echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1

 

if [ -h /usr/bin/yacc ]; then

echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc --version | head -n1`
else
echo "yacc not found"
fi

 

bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1

 

if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi

 

gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1

 

echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF

 

bash version-check.sh

 

 

Forrige Hjem Neste
2. Forberede vertssystemet

2.3. Bygge LFS i etapper

LFS er designet for å bygges i en økt. Det vil si at instruksjonene forutsetter at systemet ikke blir slått av under prosessen. Det betyr ikke at systemet må gjøres i en omgang. Problemet er at visse prosedyrer må utføres på nytt etter en omstart hvis du fortsetter LFS på forskjellige punkter.

2.3.1. Kapitler 1–4

Disse kapitlene oppnås på vertssystemet. Når du starter på nytt, må du være forsiktig med følgende:

2.3.2. Kapittel 5

2.3.3. Kapitler 6–8

Forrige Hjem Neste
2. Forberede vertssystemet

2.4. Opprette en ny partisjon

Som de fleste andre operativsystemer er LFS vanligvis installert på en dedikert partisjon. Den anbefalte tilnærmingen for å bygge et LFS-system er å bruke en tilgjengelig tom partisjon eller, hvis du har nok ikke partisjonert plass, til å lage en.

Et minimalt system krever en partisjon på rundt 10 gigabyte (GB). Dette er nok til å lagre alle kildetarballene og sammenstille pakkene. Imidlertid, hvis LFS-systemet er ment å være det primære Linux-systemet, vil antagelig programvare bli installert som vil kreve ekstra plass. En 30 GB partisjon er en rimelig størrelse for å sørge for vekst. LFS-systemet selv vil ikke ta så mye plass. En stor del av dette kravet er å sørge for tilstrekkelig fri midlertidig lagring, samt å legge til flere muligheter etter at LFS er fullført. I tillegg kan kompilering av pakker kreve mye diskplass som vil bli gjenvunnet etter at pakken er installert.

Fordi det ikke alltid er nok RAM-minne (Random Access Memory) tilgjengelig for kompilering prosesser, er det lurt å bruke en liten diskpartisjon som vekselfilpartisjon (swap). Denne brukes av kjernen til å lagre sjelden brukte data og etterlate mer minne tilgjengelig for aktive prosesser. Vekselfilpartisjonen for et LFS-system kan være den samme som den som brukes av vertssystemet, i så fall er det ikke nødvendig å opprette et nytt.

Start et diskpartisjonsprogram, for eksempel cfdisk eller fdisk, med et kommandolinjealternativ som navngir harddisken som den nye partisjonen skal opprettes på - for eksempel /dev/sda for den primære diskstasjonen. Lag om nødvendig en Linux-partisjon og en vekselfilpartisjon. Vennligst referer til cfdisk (8) eller fdisk (8) hvis du ennå ikke vet hvordan du bruker programmene.

For erfarne brukere er andre partisjonsordninger mulig. Det nye LFS-systemet kan være på en RAID-programvare eller et logisk LVM-volum. Noen av disse alternativene krever imidlertid et initramfs, som er et avansert emne. Disse delingsmetodologiene anbefales ikke for første gangs LFS-brukere.

Husk betegnelsen på den nye partisjonen (f.eks. sda5). Denne boken vil referere til dette som LFS-partisjonen. Husk også betegnelsen på vekselfilpartisjonen. Disse navnene vil være nødvendig senere for filen /etc/fstab.

2.4.1. Andre partisjonsproblemer

Forespørsler om råd om systempartisjonering blir ofte lagt ut på LFS-postlistene. Dette er et veldig subjektivt tema. Standard for de fleste distribusjoner er å bruke hele stasjonen med unntak av en liten vekselfilpartisjon. Dette er ikke optimalt for LFS av flere årsaker. Det reduserer fleksibiliteten, gjør deling av data over flere distribusjoner eller LFS byggingen vanskeligere, gjør sikkerhetskopier mer tidkrevende og kan kaste bort diskplass gjennom ineffektiv tildeling av filsystemstrukturer.

2.4.1.1. Rotpartisjonen

En root-LFS-partisjon (ikke å forveksle med /root-katalogen) på ti gigabyte er et godt kompromiss for de fleste systemer. Det gir nok plass til å bygge LFS og det meste av BLFS, men er liten nok til at det enkelt kan opprettes flere partisjoner for eksperimentering.

2.4.1.2. Swap partisjonen

De fleste distribusjoner oppretter automatisk en vekselfilpartisjon. Generelt er den anbefalte størrelsen på vekselfilpartisjonen omtrent det dobbelte av mengden fysisk RAM, men dette er sjelden nødvendig. Hvis diskplass er begrenset, holder du vekselfilpartisjonen til to gigabyte og overvåker bruken av vekselfilen.

2.4.1.3. Grub Bios partisjonen

Hvis startdisken er partisjonert med en GUID partisjonstabell (GPT), må en liten, typisk 1 MB, partisjon opprettes hvis den ikke allerede eksisterer. Denne partisjonen er ikke formatert, men må være tilgjengelig for GRUB for bruk under installasjon av oppstartslasteren. Denne partisjonen vil normalt bli merket 'BIOS Boot' hvis du bruker fdisk eller har en kode på EF02 hvis du bruker gdisk.

Grub Bios-partisjonen må være på stasjonen som BIOS bruker for å starte opp systemet. Dette er ikke nødvendigvis den samme stasjonen der LFS-rotpartisjonen er lokalisert. Disker på et system kan bruke forskjellige partisjonstabelltyper. Kravet til denne partisjonen avhenger bare av partisjonstabelltypen til startdisken.

2.4.1.4. Anvendelige partisjoner

Det er flere andre partisjoner som ikke er nødvendige, men som bør tas i betraktning når du designer en disklayout. Følgende liste er ikke omfattende, men er ment som en guide.

Eventuell separat partisjon som du vil montere automatisk ved oppstart, må spesifiseres i /etc/fstab. Detaljer om hvordan du spesifiserer partisjoner vil bli diskutert i kapittel 8.2, "Opprette /etc/fstab-filen".

Forrige Hjem Neste
2. Forberede vertssystemet

2.5. Opprette et filsystem på partisjonen

Nå som en tom partisjon er satt opp, kan filsystemet opprettes. LFS kan bruke hvilket som helst filsystem som gjenkjennes av Linux-kjernen, men de vanligste typene er ext3 og ext4. Valget av filsystem kan være sammensatt og avhenger av filtypenes egenskaper og partisjonens størrelse. For eksempel:

ext2 passer for små partisjoner som oppdateres sjelden, for eksempel /boot.

ext3 er en oppgradering til ext2 som inkluderer en journal som hjelper til med å gjenopprette partisjonens status i tilfelle av uren stenging. Det er ofte brukt som et generelt filsystem.

ext4 er den siste versjonen av ext-filsystemet av partisjonstyper. Det gir flere nye muligheter, inkludert tidsstempler av nano-sekund, oppretting og bruk av veldig store filer (16 TB) og hastighetsforbedringer.

Andre filsystemer, inkludert FAT32, NTFS, ReiserFS, JFS og XFS, er nyttige for spesialiserte formål. Mer informasjon om disse filsystemene finner du på http://en.wikipedia.org/wiki/Comparison_of_file_systems.

LFS antar at rotfilsystemet (/) er av typen ext4. Kjør følgende for å lage et ext4-filsystem på LFS-partisjonen:

mkfs -v -t ext4 /dev/<xxx>

Bytt ut <xxx> med navnet på partisjonen (f.eks sda.).

Hvis du bruker en eksisterende vekselfil-partisjon, er det ikke nødvendig å formatere den. Hvis en ny vekselfil-partisjon ble opprettet, må den initialiseres med denne kommandoen:

mkswap /dev/<yyy>

Bytt ut <yyy> med navnet på vekselfilpartisjonen.

Forrige Hjem Neste
2. Forberede vertssystemet

2.6. Stille inn $LFS variabelen

Gjennom denne boken vil miljøvariabelen LFS brukes flere ganger. Du må sørge for at denne variabelen alltid er definert gjennom LFS-byggeprosessen. Det bør settes til navnet på katalogen der du skal bygge LFS-systemet - vi vil bruke /mnt/lfs som et eksempel, men katalogvalget er opp til deg. Hvis du bygger LFS på en egen partisjon, vil denne katalogen være monteringspunktet for partisjonen. Velg en katalogplassering og sett variabelen med følgende kommando:

export LFS=/mnt/lfs

Å ha dette variabelsettet er fordelaktig ved at kommandoer som mkdir -v $LFS/tools kan skrives bokstavelig. Skallet erstatter automatisk "$LFS" med "/mnt/lfs" (eller hva variabelen ble satt til) når den behandler kommandolinjen.

Ikke glem å sjekke at LFS er innstilt når du forlater og går inn i det nåværende arbeidsmiljøet (for eksempel når du gjør en su to root eller en annen bruker). Sjekk at LFS-variabelen er riktig konfigurert med:

echo $LFS

Ikke glem å sjekke at LFS er innstilt når du forlater og går inn i det nåværende arbeidsmiljøet (for eksempel når du gjør en su to root eller en annen bruker). Sjekk at LFS-variabelen er riktig konfigurert med:

echo $LFS

Forsikre deg om at utdataene viser banen til LFS-systemets byggeplassering, som er /mnt/lfs hvis eksemplet som ble gitt, ble fulgt. Hvis utdataet er feil, bruk kommandoen gitt tidligere på denne siden for å sette $LFS til riktig katalognavn.

En måte å sikre at LFS-variabelen alltid er satt på er å redigere .bash_profile filen i både din personlige hjemmekatalog og i /root/.bash_profile og angi eksportkommandoen over. I tillegg må skallet som er spesifisert i filen /etc/passwd for alle brukere som trenger LFS-variabelen, være bash for å sikre at filen /root/.bash_profile er integrert som en del av påloggingsprosessen.

En annen vurdering er metoden som brukes for å logge inn i vertssystemet. Hvis du logger på via en grafisk skjermbehandler, brukes ikke brukerens .bash_profile vanligvis når en virtuell terminal startes. I dette tilfellet legger du eksportkommandoen til .bashrc-filen for brukeren og roten. I tillegg har noen distribusjoner instruksjoner om ikke å kjøre .bashrc-instruksjonene i en ikke-interaktiv bash-innkalling. Sørg for å legge til eksportkommandoen før testen for ikke-interaktiv bruk.

Forrige Hjem Neste
2. Forberede vertssystemet

2.7. Montering av den nye partisjonen

Nå som et filsystem er opprettet, må partisjonen gjøres tilgjengelig. For å gjøre dette, må partisjonen monteres på et valgt monteringspunkt. I denne bokens formål antas det at filsystemet er montert under katalogen som er spesifisert av LFS-miljøvariabelen som beskrevet i forrige seksjon.

Opprett monteringspunktet og monter LFS-filsystemet ved å kjøre:

mkdir -pv $LFS

mount -v -t ext4 /dev/<xxx> $LFS

Erstatt <xxx> med betegnelsen på LFS-partisjonen.

Hvis du bruker flere partisjoner for LFS (f.eks. En for / og en annen for /usr), må du montere dem ved å bruke:

mkdir -pv $LFS

mount -v -t ext4 /dev/<xxx> $LFS

mkdir -v $LFS/usr

mount -v -t ext4 /dev/<yyy> $LFS/usr

Erstatt <xxx> og <yyy> med betegnelsene på partisjonene (f.eks sda eller sdb1.).

Hvis du bruker en vekselfil-partisjon, må du forsikre deg om at den er aktivert ved hjelp av swapon-kommandoen:

/sbin/swapon -v /dev/<zzz>

Erstatt <zzz> med navnet på vekselfilpartisjonen.

Nå som det er et etablert sted å jobbe, er det på tide å laste ned pakkene.

Forrige Hjem Neste

3. Pakker og oppdateringer

Dette kapittelet inneholder en liste over pakker som må lastes ned for å kunne bygge et grunnleggende Linux-system.

3. Pakker og oppdateringer

3.1. Introduksjon

Dette kapittelet inneholder en liste over pakker som må lastes ned for å kunne bygge et grunnleggende Linux-system. De oppgitte versjonsnumrene tilsvarer versjoner av programvaren som er kjent for å fungere, og denne boken er basert på deres bruk. Vi anbefaler på det sterkeste å ikke bruke nyere versjoner fordi byggekommandoene for en versjon kanskje ikke fungerer med en nyere versjon. De nyeste pakkeversjonene kan også ha problemer som krever omgåelse. Disse arbeidsområdene vil bli utviklet og stabilisert i utviklingsversjonen av boken.

Nedlastingssteder er ikke alltid tilgjengelige. Hvis et nedlastingssted har endret seg siden denne boken ble utgitt, gir Google (http://www.google.com/) en nyttig søkemotor for de fleste pakker. Hvis dette søket ikke lykkes, kan du prøve et av de alternative nedlastingsmidlene som er omtalt på http://www.linuxfromscratch.org/lfs/packages.html#packages.

Nedlastede pakker og oppdateringer må lagres et sted som er praktisk tilgjengelig i hele bygget. Det kreves også en arbeidskatalog for å pakke ut kildene og bygge dem. $ LFS/sources kan brukes både som sted å lagre tarballer og oppdateringer og som en arbeidskatalog. Ved å bruke denne katalogen vil de nødvendige elementene være lokalisert på LFS-partisjonen og vil være tilgjengelige i alle stadier av byggeprosessen.

For å opprette denne katalogen, kjør følgende kommando, som bruker root, før du starter nedlastingsøkten:

mkdir -v $LFS/sources

Gjør denne katalogen skrivbar og klebrig (sticky). "Klebrig" betyr at selv om flere brukere har skrivetillatelse på en katalog, kan bare eieren av en fil slette filen i en klebrig katalog. Følgende kommando aktiverer skrivemodus og klistremodus:

chmod -v a+wt $LFS/sources

En enkel måte å laste ned alle pakkene og oppdateringene er ved å bruke wget-list som en inndata til wget. For eksempel:

wget --input-file=wget-list --continue --directory-prefix=$LFS/sources

I tillegg, fra og med LFS-7.0, er det en egen fil, md5sums, som kan brukes til å bekrefte at alle de riktige pakkene er tilgjengelige før du fortsetter. Plasser filen i $LFS/sources og kjør:

pushd $LFS/sources

md5sum -c md5sums

popd

Forrige Hjem Neste
3. Pakker og oppdateringer

3.2. Alle pakker

Last ned eller få tak i følgende pakker:

Fil (5.38) kan være utilgjengelig på det angitte stedet. Nettstedsadministratorene for masternedlastingsstedet fjerner tidvis eldre versjoner når nye slippes. Et alternativt nedlastingssted som kan ha riktig versjon tilgjengelig, finner du også på: http://www.linuxfromscratch.org/lfs/download.html#ftp.

Linux-kjernen oppdateres relativt ofte, mange ganger på grunn av funn av sikkerhetsproblemer. Den nyeste tilgjengelige 5.5.x-kjerneversjonen bør brukes, med mindre errata-siden sier noe annet.

For brukere med begrenset hastighet eller dyr båndbredde som ønsker å oppdatere Linux-kjernen, kan en grunnleggende versjon av pakken og oppdateringer lastes ned separat. Dette kan spare litt tid eller kostnader for en påfølgende oppdatering av patch-nivå i løpet av en mindre utgave.

Versjonen av vim endres daglig. Få den nyeste versjonen, gå til https://github.com/vim/vim/releases.

Total størrelse på disse pakkene: ca 398 MB

Forrige Hjem Neste
3. Pakker og oppdateringer

3.3. Nødvendige oppdateringer

I tillegg til pakkene, er det også behov for flere oppdateringer. Disse oppdateringene korrigerer eventuelle feil i pakkene som bør repareres av vedlikeholderen. Oppdateringene gjør også små modifikasjoner for å gjøre pakkene lettere å jobbe med. Følgende oppdateringer vil være nødvendig for å bygge et LFS-system:

Total størrelse på disse oppdateringene: ca. 208,8 KB

I tillegg til ovennevnte obligatoriske oppdateringer, finnes det et antall valgfrie oppdateringer opprettet av LFS-samfunnet. Disse valgfrie oppdateringene løser mindre problemer eller aktiverer funksjonalitet som ikke er aktivert som standard. Les gjerne oppdateringsdatabasen på http://www.linuxfromscratch.org/patches/downloads/ og skaff deg eventuelle tilleggsoppdateringer som passer dine systembehov.

Forrige Hjem Neste

4. Avsluttende forberedelser

I dette kapittelet vil vi utføre noen ekstra oppgaver for å forberede oss på å bygge det midlertidige systemet.

4. Avsluttende forberedelser

4.1. Introduksjon

I dette kapittelet vil vi utføre noen ekstra oppgaver for å forberede oss på å bygge det midlertidige systemet. Vi vil opprette en katalog i $LFS for installasjon av de midlertidige verktøyene, legge til en upriviligert bruker for å redusere risikoen og skape et passende byggemiljø for den brukeren. Vi vil også forklare tidsenheten vi bruker for å måle hvor lang tid LFS-pakker tar å bygge, eller “SBUer”, og gi litt informasjon om pakkeforsøkssuiter.

Forrige Hjem Neste
4. Avsluttende forberedelser

4.2. Opprette katalogen $LFS/tools

Alle programmer som er satt sammen i kapittel 5, vil bli installert under $LFS/tools for å holde dem adskilt fra programmene som er satt sammen i kapittel 6. Programmene som er samlet her er midlertidige verktøy og vil ikke være en del av det endelige LFS-systemet. Ved å holde disse programmene i en egen katalog, kan de lett slettes senere. Dette forhindrer også at disse programmene havner i vertsproduksjonskatalogene (enkelt å gjøre ved en tilfeldighet i kapittel 5).

Opprett ønsket katalog ved å kjøre følgende som root:

mkdir -v $LFS/tools

Neste trinn er å lage en /tools symlink på vertssystemet. Dette vil peke på den nyopprettede katalogen på LFS-partisjonen. Kjør denne kommandoen også som root:

ln -sv $LFS/tools /

Kommandoen ovenfor er riktig. Kommandoen ln har noen få syntaktiske varianter, så husk å sjekke info coreutils ln og ln (1) før du rapporterer hva du kanskje synes er en feil.

Den opprettede symlinken gjør det mulig å kompilere verktøykjeden slik at den alltid refererer til /tools, noe som betyr at kompilatoren, assembleren og linkeren fungerer både i kapittel 5 (når vi fremdeles bruker noen verktøy fra verten) og i det neste ( når vi blir "chrooted" til LFS-partisjonen).

Forrige Hjem Neste
4. Avsluttende forberedelser

4.3. Legge til LFS-brukeren

Når du er logget inn som bruker root, kan det å gjøre en enkelt feil skade eller ødelegge et system. Derfor anbefaler vi å bygge pakkene i neste kapittel som en upriviligert bruker. Du kan bruke ditt eget brukernavn, men for å gjøre det lettere å sette opp et rent arbeidsmiljø, opprett en ny bruker kalt lfs som medlem av en ny gruppe (også kalt lfs) og bruke denne brukeren under installasjonsprosessen. Som root utfører du følgende kommandoer for å legge til den nye brukeren:

groupadd lfs

useradd -s /bin/bash -g lfs -m -k /dev/null lfs

Betydningen av alternativene for kommandolinjen:

-s /bin/bash
Dette gjør bash til standardskallet for bruker lfs.

-g lfs
Dette alternativet legger bruker lfs til gruppe lfs.

-m
Dette oppretter en hjemmekatalog for lfs.

-k /dev/null
Denne parameteren forhindrer mulig kopiering av filer fra en skjelettkatalog (standard er /etc/skel) ved å endre inngangsposisjonen til den spesielle nullenheten.

lfs
Dette er det faktiske navnet på den opprettede gruppen og brukeren.

Hvis du vil logge på som lfs (i motsetning til å bytte til bruker-lfs når du er logget på som root, noe som ikke krever at lfs-brukeren har et passord), gir lfs et passord:

passwd lfs

Gi lfs full tilgang til $LFS/tools ved å gjøre lfs til katalogeieren:

chown -v lfs $LFS/tools

Hvis en egen arbeidskatalog ble opprettet som foreslått, gi brukeren lfs eierskap til denne katalogen:

chown -v lfs $LFS/sources

I noen vertssystemer fullføres følgende kommando ikke ordentlig og suspenderer innloggingen til lfs-brukeren til bakgrunnen. Hvis ledeteksten "lfs: ~ $" ikke vises umiddelbart, skriver du inn fg-kommandoen for å løse problemet.

Deretter logger du inn som bruker lfs. Dette kan gjøres via en virtuell konsoll, gjennom en skjerm behandler eller med følgende brukerkommando:

su - lfs

“-” instruerer su om å starte et påloggingsskall i motsetning til et ikke-påloggingsskall. Forskjellen mellom disse to skjelltyper finner du i detalj i bash(1) og info bash.

Forrige Hjem Neste
4. Avsluttende forberedelser

4.4. Sette opp miljøet

Sett opp et godt arbeidsmiljø ved å lage to nye oppstartsfiler for bash shell. Når du er logget inn som bruker-lfs, kan du skrive følgende kommando for å opprette en ny .bash_profile:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Når du er logget på som bruker lfs, er det innledende skallet vanligvis et påloggingsskall som leser /etc/profile til verten (inneholder sannsynligvis noen innstillinger og miljøvariabler) og deretter .bash_profile. Exec env -i ... /bin/bash kommandoen i .bash_profile filen erstatter det løpende skallet med et nytt med et helt tomt miljø, bortsett fra HOME-, TERM- og PS1-variablene. Dette sikrer at ingen uønskede og potensielt farlige miljøvariabler fra vertssystemet lekker inn i bygningsmiljøet. Teknikken som brukes her oppnår målet om å sikre et rent miljø.

Den nye skallet er et ikke-påloggingsskall, som ikke leser /etc/profile eller .bash_profile filene, men heller leser .bashrc filen i stedet. Lag .bashrc filen nå:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF

Set + h kommandoen slår av bashs hashfunksjon. Hashing er vanligvis en nyttig funksjon -bash bruker en hashtabell for å huske hele banen til kjørbare filer for å unngå å søke på PATH gang på gang for å finne den samme kjørbare filen. Imidlertid bør de nye verktøyene brukes så snart de er installert. Ved å slå av hasjfunksjonen vil skallet alltid søke på PATH når et program skal kjøres. Som sådan vil skallet finne de nylig kompilerte verktøyene i $LFS/tools så snart de er tilgjengelige uten å huske en tidligere versjon av det samme programmet på et annet sted.

Innstilling av brukerfil opprettelsesmaske (umask) til 022 sikrer at nyopprettede filer og kataloger bare kan skrives av sin eier, men er lesbare og kjørbare av andre (forutsatt at standardmodus brukes av det åpne (2) systemanropet, nye filer vil ende opp med tillatelsesmodus 644 og kataloger med modus 755).

LFS-variabelen bør settes til det valgte monteringspunktet.

LC_ALL variabelen styrer lokaliseringen av visse programmer, slik at meldingene deres følger konvensjonene i et spesifisert land. Innstilling av LC_ALL til “POSIX” eller “C” (de to er likeverdige) sikrer at alt fungerer som forventet i chroot-miljøet.

LFS_TGT variabelen angir en ikke-standard, men kompatibel maskinbeskrivelse for bruk når du bygger vår tverrkompiler og linker og når du krysser sammen den midlertidige verktøykjeden vår. Mer informasjon finnes i avsnitt 5.2, “Tekniske merknader for verktøykjede”.

Ved å sette /tools/bin foran standard PATH, blir alle programmene installert i kapittel 5 plukket opp av skallet rett etter installasjonen. Dette, kombinert med å slå av hashing, begrenser risikoen for at gamle programmer brukes fra verten når de samme programmene er tilgjengelige i kapittel 5-miljøet.

Til slutt, for å ha miljøet fullt forberedt på å bygge de midlertidige verktøyene, kan du peke til den nettopp opprettede brukerprofilen:

source ~/.bash_profile
Forrige Hjem Neste
4. Avsluttende forberedelser

4.5. Om SBU

Mange vil på forhånd vite om hvor lang tid det tar å sette sammen og installere hver pakke. Fordi Linux From Scratch kan bygges på mange forskjellige systemer, er det umulig å gi nøyaktige tidsestimater. Den største pakken (Glibc) vil ta omtrent 20 minutter på de raskeste systemene, men kan ta opptil tre dager på tregere systemer! I stedet for å oppgi faktiske tidspunkter, vil SBU (Standard Build Unit) brukes i stedet.

SBU fungerer som følger. Den første pakken som er satt sammen fra denne boken er Binutils i kapittel 5. Tiden det tar å kompilere denne pakken er det som vil bli referert til som Standard Build Unit eller SBU. Alle andre sammenstillingstider vil bli uttrykt i forhold til denne tiden.

Tenk for eksempel på en pakke hvis kompileringstid er 4,5 SBU. Dette betyr at hvis et system tok 10 minutter å kompilere og installere den første passering av Binutils, vil det ta omtrent 45 minutter å bygge denne eksempelpakken. Heldigvis er de fleste byggetider kortere enn for Binutils.

Generelt er SBU ikke helt nøyaktige fordi de er avhengige av mange faktorer, inkludert vertssystemets versjon av GCC. De er gitt her for å gi et overslag over hvor lang tid det kan ta å installere en pakke, men tallene kan variere med så mange titalls minutter i noen tilfeller.

For mange moderne systemer med flere prosessorer (eller kjerner) kan kompileringstiden for en pakke reduseres ved å utføre et "parallel make" ved å enten stille inn en miljøvariabel eller fortelle merkeprogrammet hvor mange prosessorer som er tilgjengelige. For eksempel kan en Core2Duo støtte to samtidige prosesser med:

export MAKEFLAGS='-j 2'

eller bare bygge med:

make -j2

Når flere prosessorer brukes på denne måten, vil SBU-enhetene i boken variere enda mer enn de normalt ville gjort. I noen tilfeller vil make ganske enkelt mislykkes. Det vil også være vanskeligere å analysere utdataene fra byggeprosessen fordi linjene til forskjellige prosesser blir sammenflettet. Hvis du får et problem med et byggetrinn, kan du gå tilbake til en enkelt prosessor for å analysere feilmeldingene på riktig måte.

Forrige Hjem Neste
4. Avsluttende forberedelser

4.6 Om test suiter

De fleste pakker gir en testsuite. Det er en god ide å kjøre testpakken for en nybygd pakke fordi den kan gi en "tilregnelighetskontroll" som indikerer at alt er satt sammen riktig. En testsuite som passerer sitt sett med kontroller, beviser vanligvis at pakken fungerer som utvikleren hadde til hensikt. Det garanterer imidlertid ikke at pakken er helt feilfri.

Noen testsuiter er viktigere enn andre. For eksempel er testsuitene for de viktigste verktøykjedepakkene - GCC, Binutils og Glibc - av største betydning på grunn av sin sentrale rolle i et fungerende system. Test suitene for GCC og Glibc kan ta veldig lang tid å fullføre, spesielt på tregere maskinvare, men er sterkt anbefalt.

Erfaring har vist at det er lite å hente ved å kjøre testsuiter i kapittel 5. Det kan ikke være noe å slippe unna at vertssystemet alltid utøver en viss innflytelse på testene i det kapitlet, noe som ofte forårsaker uforklarlige feil. Fordi verktøyene som er bygd i kapittel 5 er midlertidige og til slutt kasseres, anbefaler vi ikke å kjøre testsuiter i kapittel 5 for den gjennomsnittlige leseren. Instruksjonene for å kjøre disse testsuitene er gitt til fordel for testere og utviklere, men de er strengt valgfrie.

Et vanlig problem med å kjøre testsuiter for Binutils og GCC  er å gå tom for pseudo-terminaler (PTY). Dette kan resultere i et høyt antall sviktende tester. Dette kan skje av flere årsaker, men den mest sannsynlige årsaken er at vertssystemet ikke har devpts-filsystemet satt opp riktig. Dette problemet blir diskutert nærmere på http://www.linuxfromscratch.org/lfs/faq.html#no-ptys.

Noen ganger vil pakketestsuiter mislykkes, men av grunner som utviklerne er klar over og har ansett som ikke-kritiske. Konsulter loggene på http://www.linuxfromscratch.org/lfs/build-logs/9.1/ for å bekrefte om disse feilene er forventet eller ikke. Dette nettstedet er gyldig for alle tester i denne boken.

Forrige Hjem Neste

5. Konstruere et midlertidig system

Dette kapittelet viser hvordan du bygger et minimalt Linux-system. Dette systemet vil inneholde akkurat nok verktøy til å begynne å konstruere det endelige LFS-systemet i kapittel 6 og gi et arbeidsmiljø med mer brukervennlighet enn et minimumsmiljø ville gjort.

5. Konstruere et midlertidig system

5.1. Introduksjon

Dette kapittelet viser hvordan du bygger et minimalt Linux-system. Dette systemet vil inneholde akkurat nok verktøy til å begynne å konstruere det endelige LFS-systemet i kapittel 6 og gi et arbeidsmiljø med mer brukervennlighet enn et minimumsmiljø ville gjort.

Det er to trinn i å bygge dette minimale systemet. Det første trinnet er å bygge en ny og vertsuavhengig verktøykjede (kompilator, assembler, linker, biblioteker og noen få nyttige verktøy). Det andre trinnet bruker denne verktøykjeden for å bygge de andre viktige verktøyene.

Filene som er satt sammen i dette kapittelet, blir installert under katalogen $LFS/tools for å holde dem adskilt fra filene som er installert i neste kapittel og vertsproduksjonskatalogene. Siden pakkene som er satt sammen her er midlertidige, ønsker vi ikke at de skal forurense det snart kommende LFS-systemet.

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.2. Tekniske merknader for verktøykjede

Denne delen forklarer noen av begrunnelsene og tekniske detaljene bak den generelle byggmetoden. Det er ikke viktig å umiddelbart forstå alt i dette avsnittet. Det meste av denne informasjonen vil være tydeligere etter å ha utført et faktisk bygg. Denne delen kan bli vist til når som helst under prosessen.

Det overordnede målet med kapittel 5 er å produsere et midlertidig område som inneholder et kjent godt sett med verktøy som kan isoleres fra vertssystemet. Ved å bruke chroot, vil kommandoene i de gjenværende kapitlene være inne i det miljøet, noe som sikrer en ren, problemfri bygging av LFS systemet. Byggeprosessen er designet for å minimere risikoen for nye lesere og samtidig gi mest mulig pedagogisk verdi.

Før du fortsetter, må du være oppmerksom på navnet på arbeidsplattformen, ofte referert til som mål triplett. En enkel måte å bestemme navnet på mål tripletten er å kjøre config.guess-skriptet som følger med kilden for mange pakker. Pakk ut Binutils-kildene og kjør skriptet: ./config.guess og noter output. For en 32-biters Intel-prosessor vil for eksempel utgangen være i686-pc-linux-gnu. På et 64-biters system vil det være x86_64-pc-linux-gnu.

Vær også oppmerksom på navnet på plattformens dynamiske linker, ofte referert til som den dynamiske lasteren (for ikke å forveksle med standard linker ld som er en del av Binutils). Den dynamiske linkeren levert av Glibc finner og laster de delte bibliotekene som trengs av et program, forbereder programmet til å kjøre og kjører det deretter. Navnet på den dynamiske linkeren for en 32-bit Intel-maskin vil være ld-linux.so.2 (ld-linux-x86-64.so.2 for 64-biters systemer). En sikker måte å bestemme navnet på den dynamiske linkeren er å inspisere en tilfeldig binær fra vertssystemet ved å kjøre: readelf -l <name of binary> | grep interpreter tolk og noterer output. Den autoritative referansen som dekker alle plattformer, er i filen shlib-versjoner i roten til Glibc kildetre.

Noen viktige tekniske punkter for hvordan kapittel 5-byggemetoden fungerer:

Binutils installeres først fordi konfigurasjonsløpene for både GCC og Glibc utfører forskjellige funksjonstester på assembleren og linkeren for å bestemme hvilke programvarefunksjoner som skal aktiveres eller deaktiveres. Dette er viktigere enn man først kan innse. En feil konfigurert GCC eller Glibc kan resultere i en subtilt ødelagt verktøykjede, der virkningen av slikt brudd kanskje ikke dukker opp før nær slutten av byggingen av en hel distribusjon. En testsuksess vil vanligvis utheve denne feilen før det utføres for mye tilleggsarbeid.

Binutils installerer assembleren og linkeren på to steder, /tools/bin og /tools/$LFS_TGT/bin. Verktøyene på det ene stedet er vanskelig knyttet til det andre. En viktig fasit for linkeren er bibliotekets søkerekkefølge. Detaljert informasjon kan fås fra ld ved å sende det --verbose flagget. For eksempel en ld - verbose | grep SEARCH vil illustrere de gjeldende søkeveiene og deres rekkefølge. Den viser hvilke filer som er lenket av ld ved å kompilere et dummy-program og sende --verbose-bryteren til linkeren. For eksempel gcc dummy.c -Wl, - verbose 2> & 1 | grep succeeded vil vise alle filene som ble vellykket åpnet under koblingen.

Den neste pakken som er installert er GCC. Et eksempel på hva som kan sees i løpet av konfigurasjonen er:

checking what assembler to use... /tools/i686-lfs-linux-gnu/bin/as
checking what linker to use... /tools/i686-lfs-linux-gnu/bin/ld

Dette er viktig av grunnene nevnt ovenfor. Det viser også at GCCs konfigurasjonsskript ikke søker i PATH-katalogene for å finne hvilke verktøy du vil bruke. Imidlertid brukes ikke nødvendigvis de samme søkeveiene under selve driften av selve gcc. For å finne ut hvilken standard linker gcc vil bruke, kjør: gcc -print-prog-name = ld.

Detaljert informasjon kan fås fra gcc ved å sende det -v kommandolinjealternativet mens du sammenstiller et dummy-program. For eksempel vil gcc -v dummy.c vise detaljert informasjon om forbehandler, kompilering og monteringstrinn, inkludert gcc inkluderte søkeveier og deres rekkefølge.

Neste å installere er en ren Linux API headers. Disse lar standard C-biblioteket (Glibc) samhandle mot funksjoner som Linux-kjernen vil gi.

Den neste pakken som er installert er Glibc. De viktigste betraktningene for å bygge Glibc er kompilatoren, binære verktøy og kjerneoverskrifter. Kompilatoren er vanligvis ikke et problem, siden Glibc alltid vil bruke kompilatoren relatert til - host-parameteren som er sendt til konfigurasjonsskriptet; f.eks i vårt tilfelle vil kompilatoren være i686-lfs-linux-gnu-gcc. De binære verktøyene og kjerneoverskriftene kan være litt mer kompliserte. Ta derfor ingen risiko og bruk de tilgjengelige konfigurasjonsbryterne for å håndheve de riktige valgene. Etter konfigureringskjøringen, sjekk innholdet i config.make-filen i glibc-build-katalogen for alle viktige detaljer. Legg merke til bruken av CC = "i686-lfs-gnu-gcc" for å kontrollere hvilke binære verktøy som brukes, og bruken av -nostdinc og -system-flaggene for å kontrollere kompilatorens inkluderte søkebane. Disse varene fremhever et viktig aspekt av Glibc-pakken - den er veldig selvforsynt med tanke på byggmaskineriet og stoler generelt ikke på standardverktøyets standardverdier.

I løpet av den andre passering av Binutils er vi i stand til å bruke - with-lib-path-konfigurasjonsbryteren til å kontrollere ld's biblioteksøkingssti.

For den andre passering av GCC, må kildene også modifiseres for å fortelle GCC om å bruke den nye dynamiske linkeren. Unnlatelse av å gjøre dette vil resultere i at GCC-programmene selv har navnet på den dynamiske linkeren fra vertssystemets /lib-katalogen innebygd i dem, noe som vil beseire målet om å komme vekk fra verten. Fra dette tidspunktet er kjerneverktøykjeden selvforsynt og selv vert. Resten av kapittel 5-pakkene bygger alle mot den nye Glibc in /tools.

Når du kommer inn i chroot-miljøet i kapittel 6, er den første store pakken som er installert Glibc, på grunn av dens selvforsynt natur nevnt ovenfor. Når denne Glibc er installert i /usr, vil vi utføre en rask omstilling av standardverktøyene til verktøykjeden og deretter fortsette med å bygge resten av LFS-systemet.

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.3. Generelle instruksjoner om kompilering

Når du bygger pakker er det flere forutsetninger gjort i instruksjonene:

echo $LFS

Forsikre deg om at utdataene viser banen til LFS partisjonens monteringspunkt, som er /mnt/lfs, ved å bruke vårt eksempel.

Bygginstruksjonene forutsetter at vertssystemkravene, inkludert symbolkoblinger, er satt riktig:

* bash er skallet i bruk.

* sh er en symbolsk lenke til bash

* /usr/bin/awk er en symbolsk lenke til gawk

* /usr/bin/yacc er en symbolsk lenke til bison eller et lite skript som kjører bison.

For å legge vekt på byggeprosessen på nytt:

1. Plasser alle kilder og oppdateringer i en katalog som vil være tilgjengelig fra chroot-miljøet, for eksempel /mnt/lfs/sources/. Ikke legg kilder i /mnt/lfs/tools/.

2. Endre til kildekatalogen.

3. For hver pakke:
     a. Ved hjelp av tar programmet, trekk ut pakken som skal bygges. I kapittel 5, sørg for at du er lfs-bruker når du pakker ut pakken.
     b. Endre til katalogen som ble opprettet da pakken ble trukket ut.
     c. Følg bokens instruksjoner for bygging av pakken.
     d. Bytt tilbake til kildekatalogen.
     e. Slett den ekstraherte kildekatalogen med mindre annet er instruert.

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.4. Binutils-2.34 - Pass 1

Binutils-pakken inneholder en lenker, en assembler og andre verktøy for å håndtere objektfiler.

 

Omtrentlig byggetid: 1 SBU

Nødvendig diskplass: 625 MB


5.4.1. Installasjon av Cross Binutils

Gå tilbake og les merknadene i forrige avsnitt på nytt. Å forstå merknadene som er merket som viktige, vil spare deg for mange problemer senere.

Det er viktig at Binutils er den første pakken som er satt sammen fordi både Glibc og GCC utfører forskjellige tester på tilgjengelig linker og assembler for å bestemme hvilke av deres egne funksjoner som skal aktiveres.

Binutils dokumentasjonen anbefaler å bygge Binutils i en dedikert byggekatalog:

mkdir -v build

cd build

For at SBU-verdiene som er oppført i resten av boken skal kunne brukes, måler du tiden det tar å bygge denne pakken fra konfigurasjonen, til og med den første installasjonen. For å oppnå dette enkelt, pakker du inn kommandoene i en tidskommando som denne: time {./configure ... && ... && make install; }.

De omtrentlige SBU verdiene og nødvendig diskplass i kapittel 5 inkluderer ikke testsuitedata.

Forbered nå Binutils til kompilering:

../configure --prefix=/tools \
     --with-sysroot=$LFS \
     --with-lib-path=/tools/lib \
     --target=$LFS_TGT \
     --disable-nls \
     --disable-werror

Betydningen av konfigurasjonsalternativene:

--prefix=/tools
   Dette forteller konfigurasjonsskriptet å forberede for å installere Binutils-programmene i /tools katalogen.

--with-sysroot=$LFS
   For krysskompilering, dette forteller byggesystemet å søke i $LFS etter målsystembibliotekene etter behov.

--with-lib-path=/tools/lib
   Dette spesifiserer hvilken bibliotekbane koblingen skal konfigureres til å bruke.

--target=$LFS_TGT
   Fordi maskinbeskrivelsen i variabelen LFS_TGT er litt annerledes enn verdien som returneres av config.guess skriptet, vil denne bryteren fortelle konfigurasjonsskriptet om å justere Binutils byggesystem for å bygge en tverrlinker.

--disable-nls
   Dette deaktiverer internasjonalisering ettersom i18n ikke er nødvendig for de midlertidige verktøyene.

--disable-werror
   Dette forhindrer byggingen i å stoppe i tilfelle det er advarsler fra vertens kompilator.

Fortsett med å kompilere pakken:

make

Kompileringen er nå fullført. Vanligvis vil vi nå kjøre testsuiten, men på dette tidlige stadiet er rammene for testsuite (Tcl, Expect og DejaGNU) ennå ikke på plass. Fordelene med å kjøre testene på dette tidspunktet er minimale siden programmene fra denne første passering snart vil bli erstattet av de fra den andre.

Hvis du bygger på x86_64, oppretter du en symlink for å sikre at verktøykjeden er intakt:

case $(uname -m) in
     x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

Installer pakken:

make install
Forrige Hjem Neste
5. Konstruere et midlertidig system

5.5. GCC-9.2.0 - Pass 1

GCC-pakken inneholder GNU-kompilator-samlingen, som inkluderer C- og C ++ -kompilatorene.

 

Omtrentlig byggetid: 10 SBU

Nødvendig diskplass: 3,1 GB


GCC krever nå GMP-, MPFR- og MPC pakkene. Siden disse pakkene kanskje ikke er inkludert i vertsdistribusjonen din, blir de bygget med GCC. Pakk ut hver pakke i GCC-kildekatalogen, og gi nytt navn til de resulterende katalogene slik at GCC byggprosedyrene automatisk bruker dem:

tar -xf ../mpfr-4.0.2.tar.xz

mv -v mpfr-4.0.2 mpfr

tar -xf ../gmp-6.2.0.tar.xz

mv -v gmp-6.2.0 gmp

tar -xf ../mpc-1.1.0.tar.gz

mv -v mpc-1.1.0 mpc

Følgende kommando vil endre plasseringen til GCCs standard dynamiske linker for å bruke den som er installert i /tools. Den fjerner også /usr /include fra GCCs inkluderte søkebane. Utfør:

for file in gcc/config/{linux,i386/linux{,64}}.h
do
    cp -uv $file{,.orig}
    sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
           -e 's@/usr@/tools@g' $file.orig > $file
    echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
   touch $file.orig
done

I tilfelle ovennevnte virker vanskelig å følge, la oss dele det litt ned. Først kopierer vi filene gcc/config/linux.h, gcc/config/i386/linux.h og gcc/config/i368/linux64.h til en fil med samme navn, men med et tilføyd suffiks av ".orig" . Da forbereder det første sed-uttrykket “/tools” til alle forekomster av “/lib/ld”, “/lib64/ld” eller “/lib32/ld”, mens den andre erstatter hardkodede forekomster av “/usr”. Deretter legger vi til våre definere utsagn som endrer standard startfil-prefikset til slutten av filen. Legg merke til at etterfølgende “/” i “/tools/lib/” er påkrevd. Til slutt bruker vi berøring for å oppdatere tidsstemplet på de kopierte filene. Når det brukes sammen med cp -u, forhindrer dette uventede endringer i de originale filene i tilfelle kommandoene utilsiktet kjøres to ganger.

Til slutt, på x86_64-verter, angir du standard katalognavn for 64-bit biblioteker til "lib":

case $(uname -m) in
    x86_64)
       sed -e '/m64=/s/lib64/lib/' \
              -i.orig gcc/config/i386/t-linux64
;;
esac

GCC dokumentasjonen anbefaler å bygge GCC i en dedikert byggekatalog:

mkdir -v build

cd build

Forbered GCC for kompilering:

../configure \
     --target=$LFS_TGT \
     --prefix=/tools \
     --with-glibc-version=2.11 \
     --with-sysroot=$LFS \
     --with-newlib \
     --without-headers \
     --with-local-prefix=/tools \
     --with-native-system-header-dir=/tools/include \
     --disable-nls \
     --disable-shared \
     --disable-multilib \
     --disable-decimal-float \
     --disable-threads \
     --disable-libatomic \
     --disable-libgomp \
     --disable-libquadmath \
     --disable-libssp \
     --disable-libvtv \
     --disable-libstdcxx \
     --enable-languages=c,c++

Betydningen av konfigurasjonsalternativene:

--with-glibc-version=2.11
   Dette alternativet sikrer at pakken vil være kompatibel med vertens versjon av glibc. Det er satt til minimumskrav til glibc som er spesifisert i Krav til vertssystemet.

--with-newlib
   Siden et fungerende C-bibliotek ikke er tilgjengelig ennå, sikrer dette at inhibit_libc-konstanten blir definert når du bygger libgcc. Dette forhindrer kompilering av kode som krever libc-støtte.

--without-headers
   Når du oppretter en komplett tverrkompilator, krever GCC standarddeklarasjoner som er kompatible med målsystemet. For våre formål vil disse deklarasjonene ikke være nødvendige. Denne bryteren hindrer GCC i å lete etter dem.

--with-local-prefix=/tools
   Det lokale prefikset er stedet i systemet som GCC vil søke etter lokalt installerte inkludere filer. Standard er /usr/local. Å sette dette til /tools hjelper til med å holde vertsplasseringen til /usr/local utenfor denne GCCs søkevei.

--with-native-system-header-dir=/tools/include
   Som standard søker GCC /usr/include etter systemdeklarasjoner. I forbindelse med sysroot-bryteren vil dette normalt oversettes til $LFS/usr/include. Deklarasjone som vil bli installert i de neste to seksjonene vil imidlertid gå til $ LFS/tools/include. Denne bryteren sikrer at gcc vil finne dem riktig. I den andre passering av GCC vil denne samme bryteren sikre at ingen deklarasjoner fra vertssystemet blir funnet.

--disable-shared
   Denne bryteren tvinger GCC til å koble sine interne biblioteker statisk. Vi gjør dette for å unngå mulige problemer med vertssystemet.

--disable-decimal-float, --disable-threads, --disable-libatomic, --disable-libgomp, --disable-libquadmath, --disable-libssp,
--disable-libvtv, --disable-libstdcxx

   Disse bryterne deaktiverer støtte for henholdsvis flytende desimal punkter, tråd, libatomic, libgomp, libquadmath, libssp, libvtv og C ++ standardbibliotek. Disse funksjonene klarer ikke å kompilere når du bygger en tverrkompilator, og er ikke nødvendig for oppgaven med å krysse kompilere den midlertidige libc.

--disable-multilib
   På x86_64 støtter LFS ennå ikke en multilib-konfigurasjon. Denne bryteren er ufarlig for x86.

--enable-languages=c,c++
   Dette alternativet sikrer at bare C- og C ++ -kompilatorene er bygget. Dette er de eneste språkene som trengs nå.

Kompiler GCC ved å kjøre:

make

Kompileringen er nå fullført. På dette tidspunktet vil testserien normalt bli kjørt, men som nevnt før er rammene for testsuiten ikke på plass ennå. Fordelene med å kjøre testene på dette tidspunktet er minimale siden programmene fra dette første passet snart vil bli erstattet.

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.25.2, "Innhold i GCC."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.6. Linux-5.5.3 API Deklarasjoner

Linux API Deklerasjoner (i linux-5.5.3.tar.xz) eksponerer kjernens API for Glibc's bruk.

 

Omtrentlig byggetid: 0,1 SBU

Nødvendig diskplass: 1 GB


5.6.1. Installasjon av Linux API Deklarasjoner

Linux-kjernen må eksponere et API (Application Programming Interface) for systemets C-bibliotek (Glibc i LFS) for å bli brukt. Dette gjøres ved å rense forskjellige C-headerfiler som sendes i Linux-kjerne-tarballen.

Forsikre deg om at det ikke er foreldede filer som er innebygd i pakken:

make mrproper

Nå trekk ut de brukersynlige kjernedeklarasjonene fra kilden. Det anbefalte make target "headers_install" kan ikke brukes, fordi det krever rsync, som kanskje ikke er tilgjengelig. Topptekstene plasseres først i ./usr, deretter kopieres de til ønsket sted.

make headers

cp -rv usr/include/* /tools/include


Detaljer om denne pakken finnes i kapittel 6.7.2, "Innholdet i Linux API deklarasjoner".

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.7. Glibc-2.31

Glibc-pakken inneholder hovedbiblioteket. Dette biblioteket inneholder de grunnleggende rutinene for tildeling av minne, søking i kataloger, åpning og lukking av filer, lesing og skriving av filer, strenghåndtering, mønstermatching, aritmetikk og så videre.

 

Omtrentlig byggetid: 4.5 SBU

Nødvendig diskplass: 896 MB


5.7.1. Installasjon av Glibc

Glibc-dokumentasjonen anbefaler å bygge Glibc i en dedikert byggekatalog:

mkdir -v build

cd build

Deretter skal du forberede Glibc for kompilering:

../configure \
      --prefix=/tools \
      --host=$LFS_TGT \
      --build=$(../scripts/config.guess) \
      --enable-kernel=3.2 \
      --with-headers=/tools/include

Betydningen av konfigurasjonsalternativene:

--host=$LFS_TGT, --build=$(../scripts/config.guess)
   Den kombinerte effekten av disse svitsjene er at Glibcs byggesystem konfigurerer seg til å krysskompilere, ved hjelp av krysslinker og krysskompilator i /tools.

--enable-kernel=3.2
   Dette forteller Glibc å kompilere biblioteket med støtte for 3.2 og senere Linux-kjerner. Løsninger for eldre kjerner er ikke aktivert.

--with-headers=/tools/include
   Dette forteller Glibc om å kompilere seg mot topptekstene som nylig er installert i verktøyskatalogen, slik at den vet nøyaktig hvilke funksjoner kjernen har og kan optimalisere seg deretter.

I løpet av dette stadiet kan følgende advarsel vises:

configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

Det manglende eller inkompatible msgfmt-programmet er vanligvis ufarlig. Dette msgfmt-programmet er en del av Gettext-pakken som vertsdistribusjonen skal gi.

Det har vært rapporter om at denne pakken kan mislykkes når den bygges som en "parallell make". Hvis dette skjer, må du kjøre kommandoen på nytt med et "-j1" -alternativ.

Kompilere pakken:

make

Installer pakken:

make install

På dette tidspunktet er det viktig å stoppe og sikre at de grunnleggende funksjonene (sammenstilling og kobling) av den nye verktøykjeden fungerer som forventet. For å utføre en tilregnelighetskontroll, kjører du følgende kommandoer:

echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'

Hvis alt fungerer som det skal, skal det ikke være noen feil, og utgangen til den siste kommandoen vil være av formen:

[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]

Merk at for 32-biters maskiner vil tolkens navn være /tools/lib/ld-linux.so.2.

Hvis utgangen ikke vises som ovenfor, eller det ikke var noen utgang i det hele tatt, er noe galt. Undersøk og følg trinnene for å finne ut hvor problemet er og rette det. Dette problemet må løses før du fortsetter.

Når alt er bra, kan du rense opp testfilene:

rm -v dummy.c a.out

Å bygge Binutils i seksjonen etter neste vil tjene som en ekstra sjekk på at verktøykjeden er bygget riktig. Hvis Binutils ikke klarer å bygge, er det en indikasjon på at noe har gått galt med de tidligere Binutils-, GCC- eller Glibc-installasjonene.


Detaljer om denne pakken finnes i kapittel 6.9.3, "Innholdet i Glibc."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.8. Libstdc++ fra GCC-9.2.0

Libstdc ++ er standard C ++ -biblioteket. Det er nødvendig å kompilere C ++ -kode (en del av GCC er skrevet i C ++), men vi måtte utsette installasjonen da vi bygde gcc-pass1 fordi den avhenger av glibc, som ennå ikke var tilgjengelig i /tools.

 

Omtrentlig byggetid: 0.5 SBU

Nødvendig diskplass: 878 MB


5.8.1. Installation of Target Libstdc++

Libstdc ++ er en del av GCC-kildene. Du bør først pakke ut GCC-tarballen og bytte til gcc-9.2.0-katalogen.

Lag en egen byggekatalog for Libstdc ++ og gå inn i den:

mkdir -v build

cd build

Forbered Libstdc ++ for kompilering:

../libstdc++-v3/configure \
    --host=$LFS_TGT \
    --prefix=/tools \
    --disable-multilib \
    --disable-nls \
    --disable-libstdcxx-threads \
    --disable-libstdcxx-pch \
    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/9.2.0

Betydningen av konfigurasjonsalternativene:

--host=...
  Indikerer å bruke krysskompilatoren vi nettopp har bygget i stedet for den i /usr/bin.

--disable-libstdcxx-threads
  Siden gcc-pass1 er bygget uten trådstøtte, kan heller ikke C ++ trådbiblioteket bygges.

--disable-libstdcxx-pch
  Denne bryteren forhindrer installasjon av forhåndskompilerte inkluderingsfiler, som ikke er nødvendig på dette stadiet.

--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/9.2.0
  Dette er stedet der standard inkluderer filer blir søkt av C ++ -kompilatoren. I en normal utgave blir denne informasjonen automatisk sendt til Libstdc ++ konfigureringsalternativer fra øverste katalog. I vårt tilfelle må denne informasjonen gis eksplisitt.

Kompiler libstdc++ ved å kjøre:

make

Installer biblioteket:

make install

Detaljer om denne pakken finnes i kapittel 6.25.2, "Innholdet i GCC."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.9. Binutils-2.34 - Pass 2

Binutils-pakken inneholder en lenker, en assembler og andre verktøy for å håndtere objektfiler.

 

Omtrentlig byggetid: 1.1 SBU

Nødvendig diskplass: 651 MB


5.9.1. Installation of Binutils

Lag en egen byggekatalog igjen:

mkdir -v build

cd build

Forbered Binutils til kompilering:

CC=$LFS_TGT-gcc \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../configure \
   --prefix=/tools \
   --disable-nls \
   --disable-werror \
   --with-lib-path=/tools/lib \
   --with-sysroot

Betydningen av de nye konfigurasjonsalternativene:

CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib
  Fordi dette virkelig er et lokalt byggverk av Binutils, sørger du for å stille inn disse variablene for at byggesystemet bruker krysskompilatoren og tilhørende verktøy i stedet for dem på vertssystemet.

--with-lib-path=/tools/lib
   Dette forteller konfigurasjonsskriptet til å spesifisere biblioteksøkebanen under samlingen av Binutils, noe som resulterer i at /tools/lib blir sendt til linkeren. Dette forhindrer linkeren i å søke gjennom bibliotekskataloger på verten.

--with-sysroot
   Dette definerer en standard (ikke-eksisterende) sysroot-katalog /tools/$LFS_TGT/sys-root. Det er nyttig når du leter etter delte objekter som kreves av andre delte objekter eksplisitt inkludert på linkerens kommandolinje. Disse objektene blir søkt inn i katalogene som er oppført i <sysroot> /etc/ld.so.conf, og unnlater det, inn i linker-søkestien, som er riktig. Hvis denne bryteren ikke er gitt, brukes /etc/ld.so.conf på verten, det vil si at programmer kan knyttes til biblioteker på verten, som vi ønsker å unngå.

Kompiler pakken:

make

Installer pakken:

make install

Nå forbereder linkeren for "Re-justering" -fasen i neste kapittel:

make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

Betydningen av make-parametrene:

-C ld clean
   
Dette forteller make programmet å fjerne alle kompilerte filer i ld-underkatalogen.

-C ld LIB_PATH=/usr/lib:/lib
   
Dette alternativet bygger om alt i ld-underkatalogen. Å spesifisere LIB_PATH Makefile-variabelen på kommandolinjen lar oss overstyre standardverdien til de midlertidige verktøyene og peke den til riktig endelig bane. Verdien til denne variabelen spesifiserer linkerens standard biblioteksøkingssti. Denne forberedelsen brukes i neste kapittel.


Detaljer om denne pakken finnes i kapittel 6.18.2, "Innhold i binutils."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.10. GCC-9.2.0 - Pass 2

GCC-pakken inneholder GNU-kompilator-samlingen, som inkluderer C- og C ++ -kompilatorene.

 

Omtrentlig byggetid: 13 SBU

Nødvendig diskplass: 3.7 GB


5.10.1. Installasjon av GCC

Vår første bygging av GCC har installert et par interne systemdeklarasjoner. Normalt vil en av dem, limit.h, på sin side inkludere den korresponderende systemen limit.h deklarasjon, i dette tilfellet /tools/include/limits.h. Imidlertid eksisterte ikke denne på tidspunktet for den første bygget av gcc/tools/include/limits.h, så den interne overskriften som GCC installerte er en delvis, selvstendig fil og inkluderer ikke de utvidede funksjonene i systemdeklarasjonen. Dette var tilstrekkelig for å bygge den midlertidige libc, men denne byggingen av GCC krever nå full intern overskrift. Lag en fullversjon av den interne overskriften ved å bruke en kommando som er identisk med hva GCC byggesystemet gjør under normale omstendigheter:

cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
   `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h

Endre nok en gang plasseringen til GCCs standard dynamiske linker for å bruke den som er installert i /tools.

for file in gcc/config/{linux,i386/linux{,64}}.h
do
    cp -uv $file{,.orig}
    sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
           -e 's@/usr@/tools@g' $file.orig > $file
    echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
    touch $file.orig
done

Hvis du bygger på x86_64, endrer du standard katalognavn for 64-bit biblioteker til "lib":

case $(uname -m) in
    x86_64)
       sed -e '/m64=/s/lib64/lib/' \
              -i.orig gcc/config/i386/t-linux64
    ;;
esac

Som i den første bygget av GCC krever det GMP-, MPFR- og MPC-pakker. Pakk ut tarballene og flytt dem inn i de nødvendige katalognavnene:

tar -xf ../mpfr-4.0.2.tar.xz
mv -v mpfr-4.0.2 mpfr
tar -xf ../gmp-6.2.0.tar.xz
mv -v gmp-6.2.0 gmp
tar -xf ../mpc-1.1.0.tar.gz
mv -v mpc-1.1.0 mpc

Nå løser du et problem introdusert av Glibc-2.31:

sed -e '1161 s|^|//|' \
       -i libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc

Lag en egen byggekatalog igjen:

mkdir -v build
cd build

Før du begynner å bygge GCC, må du huske å fjerne alle miljøvariabler som overstyrer standard optimaliseringsflaggene.

Forbered nå GCC for kompilering:

CC=$LFS_TGT-gcc \
CXX=$LFS_TGT-g++ \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../configure \
    --prefix=/tools \
    --with-local-prefix=/tools \
    --with-native-system-header-dir=/tools/include \
    --enable-languages=c,c++ \
    --disable-libstdcxx-pch \
    --disable-multilib \
    --disable-bootstrap \
    --disable-libgomp

Betydningen av de nye konfigurasjonsalternativene:

--enable-languages=c,c++
  Dette alternativet sikrer at både C og C ++ kompilatorene er bygget.

--disable-libstdcxx-pch
  Ikke bygg den forhåndskompilerte overskriften (PCH) for libstdc ++. Det tar mye plass, og vi har ingen bruk for det.

--disable-bootstrap
  For lokale bygginger av GCC er standard å gjøre en "bootstrap" build. Dette kompilerer ikke bare GCC, men kompilerer det flere ganger. Den bruker programmene som er samlet i en første runde, for å kompilere seg selv en gang til, og deretter en tredje gang. Den andre og tredje iterasjonen sammenlignes for å sikre at den kan reprodusere seg feilfritt. Dette innebærer også at det ble satt sammen riktig. Imidlertid bør LFS byggemetoden gi en solid kompilator uten behov for å starte opp hver gang.

Kompilere pakken:

make

Installer pakken:

make install

Som en finpuss, lag en symlink. Mange programmer og skript kjører cc i stedet for gcc, som brukes til å holde programmer generiske og derfor brukbare på alle slags UNIX-systemer der GNU C-kompilatoren ikke alltid er installert. Å kjøre cc lar systemadministratoren bestemme hvilken C-kompilator som skal installeres:

ln -sv gcc /tools/bin/cc

På dette tidspunktet er det viktig å stoppe og sikre at de grunnleggende funksjonene (sammenstilling og kobling) av den nye verktøykjeden fungerer som forventet. For å utføre en tilregnelighetskontroll, kjører du følgende kommandoer:

echo 'int main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'

Hvis alt fungerer som det skal, skal det ikke være noen feil, og utgangen til den siste kommandoen vil være av formen:

[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]

Merk at for 32-biters maskiner vil tolkens navn være /tools/lib/ld-linux.so.2.

Hvis utgangen ikke vises som ovenfor, eller det ikke var noen utgang i det hele tatt, er noe galt. Først må du utføre sunnhetssjekken igjen, ved å bruke gcc i stedet for cc. Hvis dette fungerer, mangler symlinken /tools/bin/cc. Installer symlinket som ovenfor. Kontroller deretter at PATH er riktig. Dette kan sjekkes ved å kjøre ekko $PATH og bekrefte at /tools/bin står i spissen for listen. Hvis PATH er feil, kan det bety at du ikke er logget inn som bruker lfs, eller at noe gikk galt tilbake i avsnitt 4.4, "Sette opp miljøet."

Når alt er bra, kan du rense opp testfilene:

rm -v dummy.c a.out


Detaljer om denne pakken finnes i kapittel 6.25.2, "Innholdet i GCC."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.11. Tcl-8.6.10

Tcl-pakken inneholder Tool Command Language.

 

Omtrentlig byggetid: 0.9 SBU

Nødvendig diskplass: 72 MB


5.11.1. Installasjon av Tcl

Denne pakken og de to neste (Expect og DejaGNU) er installert for å støtte kjøringen av testsuiter for GCC og Binutils og andre pakker. Å installere tre pakker for testformål kan virke overdreven, men det er veldig betryggende, om ikke viktig, å vite at de viktigste verktøyene fungerer som de skal. Selv om testsuitene ikke kjøres i dette kapittelet (de er ikke obligatoriske), er disse pakkene påkrevd for å kjøre testsuiter i kapittel 6.

Merk at Tcl-pakken som brukes her er en minimal versjon som trengs for å kjøre LFS-tester. For full pakke, se BLFS Tcl prosedyrer.

Forbered Tcl for kompilering:

cd unix
./configure --prefix=/tools

Kompiler pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Tcl testserien uansett, utfør du følgende kommando:

TZ=UTC make test

Tcl testpakken kan oppleve feil under visse vertsforhold som ikke er fullstendig forstått. Derfor er testfeil her ikke overraskende og anses ikke som kritiske. Parameteren TZ = UTC setter tidssonen til Koordinert universell tid (UTC), men bare for testpakkenes varighet. Dette sikrer at klokketestene utøves riktig. Detaljer om TZ-miljøvariabelen er gitt i kapittel 7.

Installer pakken:

make install

Gjør det installerte biblioteket skrivbart slik at feilsøkingssymboler kan fjernes senere:

chmod -v u+w /tools/lib/libtcl8.6.so

Installer Tcls deklarasjoner. Den neste pakken, Expect, krever at de bygges.

make install-private-headers

Nå lager du en nødvendig symbolsk lenke:

ln -sv tclsh8.6 /tools/bin/tclsh

 

5.11.2. Innholdet i Tcl

Installerte programmer: tclsh (lenker til tclsh8.6) og tclsh8.6

Installerte biblioteker: libtcl8.6.so, libtclstub8.6.a

Korte beskrivelser

tclsh8.6 - Tcl kommandoskallet

tclsh - En lenke til tclsh8.6

libtcl8.6.so - Tcl biblioteket

libtclstub8.6.a - Tcl Stub-biblioteket

 

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.12. Expect-5.45.4

Expect-pakken inneholder et program for gjennomføring av skriptede dialoger med andre interaktive programmer.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 4.0 MB


5.12.1. Installasjon av Expect

Først må du tvinge Expects konfigurasjonsskript til å bruke /bin/stty i stedet for en /usr/local/bin/stty den kan finne på vertssystemet. Dette vil sikre at test suite verktøyene våre forblir intakte for de endelige byggene av vår verktøykjede:

cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure

Forbered Expect for kompilering:

./configure --prefix=/tools \
                   --with-tcl=/tools/lib \
                   --with-tclinclude=/tools/include

Betydningen av konfigurasjonsalternativene:

--with-tcl=/tools/lib
   Dette sikrer at konfigurasjonsskriptet finner Tcl-installasjonen på stedet for midlertidig verktøy i stedet for å muligens finne en eksisterende på vertssystemet.

--with-tclinclude=/tools/include
   Dette forteller eksplisitt Expect hvor du finner Tcls interne deklarasjoner. Hvis du bruker dette alternativet, unngår du forhold der konfigurasjonen mislykkes fordi den ikke automatisk kan oppdage plasseringen til Tcls deklarasjoner.

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Expect testserien uansett, utfør du følgende kommando:

make test

Expext testpakken kan oppleve feil under visse vertsforhold som ikke er fullstendig forstått. Derfor er testfeil her ikke overraskende og anses ikke som kritiske.

Installer pakken:

make SCRIPTS="" install

Betydningen av make parameteren:

SCRIPTS=""
   Dette forhindrer installasjon av tilleggs Expect-skript, som ikke er nødvendig.


5.12.2. Innholdet i Expect

Installerte programmer: expect

Installert bibliotek: libexpect-5.45.so

Korte beskrivelser

expect - Kommuniserer med andre interaktive programmer i henhold til et manus

libexpect-5.45.so - Inneholder funksjoner som gjør at Expect kan brukes som en Tcl-utvidelse eller å brukes direkte fra C eller C ++ (uten Tcl)

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.13. DejaGNU-1.6.2

DejaGNU-pakken inneholder et rammeverk for testing av andre programmer.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 3.2 MB


5.13.1. Installasjon av DejaGNU

Forbered DejaGNU for kompilering:

./configure --prefix=/tools

Kompilere og installere pakken:

make install

For å teste resultatet

make check

5.13.2. Innholdet i DejaGNU

Installert program: runtest

Korte beskrivelser

runtest - Et innpakningsskript som finner det rette forventningsskallet og deretter kjører DejaGNU

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.14. M4-1.4.18

M4-pakken inneholder en makroprosessor.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 20 MB


5.14.1. Installasjon av M4

Lag først noen rettelser introdusert av glibc-2.28:

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h

Forbered M4 for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre M4 testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.16.2, "Innholdet i M4."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.15. Ncurses-6.2

Ncurses-pakken inneholder biblioteker for terminaluavhengig håndtering av karakterskjermer.

 

Omtrentlig byggetid: 0.6 SBU

Nødvendig diskplass: 41 MB


5.15.1. Installasjon av Ncurses

Først må du forsikre deg om at gawk blir funnet først under konfigurasjonen:

sed -i s/mawk// configure

Forbered Ncurses for kompilering:

./configure --prefix=/tools \
                   --with-shared \
                   --without-debug \
                   --without-ada \
                   --enable-widec \
                   --enable-overwrite

Betydningen av konfigurasjonsalternativene:

--without-ada
  Dette sikrer at Ncurses ikke bygger støtte for Ada-kompilatoren som kan være til stede på verten, men ikke vil være tilgjengelig når vi kommer inn i chroot-miljøet.

--enable-overwrite
  Dette forteller Ncurses å installere deklarasjonene i /tools/include, i stedet for /tools/include/ncurses, for å sikre at andre pakker kan finne Ncurses deklarasjonene.

--enable-widec
  Denne bryteren fører til at brede-tegn biblioteker (f.eks. Libncursesw.so.6.2) bygges i stedet for normale (f.eks. Libncurses.so.6.2). Disse bred-karakter bibliotekene er brukbare i både multibyte og tradisjonelle 8-biters lokaliteter, mens normale biblioteker fungerer ordentlig bare i 8-biters lokaliteter. Bred-karakter biblioteker og normale biblioteker er kildekompatible, men ikke binær-kompatible.

Kompiler pakken:

make

Denne pakken har en testsuite, men den kan bare kjøres etter at pakken er installert. Testene ligger i test/ katalogen. Se README-filen i den katalogen for mer informasjon.

Installer pakken:

make install
ln -s libncursesw.so /tools/lib/libncurses.so

 

Detaljer om denne pakken finnes i kapittel 6.27.2, "Innhold i Ncurses."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.16. Bash-5.0

Bash-pakken inneholder Bourne-Again SHell

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 67 MB


5.16.1. Installasjon av Bash

Forbered Bash for kompilering:

./configure --prefix=/tools --without-bash-malloc

Betydningen av konfigurasjonsalternativene:

--without-bash-malloc
  Dette alternativet slår av bruken av Bashs minnetildelingsfunksjon (malloc) som er kjent for å forårsake segmenteringsfeil. Ved å slå av dette alternativet, vil Bash bruke malloc-funksjonene fra Glibc som er mer stabile.

Kompiler pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Bash testserien uansett, utfør du følgende kommando:

make tests

Installer pakken:

make install

Lag en lenke for programmene som bruker sh til et skall:

ln -sv bash /tools/bin/sh

Detaljer om denne pakken finnes i kapittel 6.35.2, "Innhold i Bash."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.17. Bison-3.5.2

Bison-pakken inneholder en parsergenerator.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 43 MB


5.17.1. Installasjon av Bison

Forbered Bison for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.32.2, "Innhold i Bison."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.18. Bzip2-1.0.8

Bzip2-pakken inneholder programmer for komprimering og dekomprimering av filer. Komprimering av tekstfiler med bzip2 gir en mye bedre komprimeringsprosent enn med den tradisjonelle gzip.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 6.4 MB


5.18.1. Installasjon av Bzip2

Bzip2-pakken inneholder ikke et konfigurasjonsskript. Det er to Make filer, en for det delte biblioteket, og den andre for det statiske biblioteket. Siden vi trenger begge deler, gjør vi kompileringen i to trinn. Først det delte biblioteket:

make -f Makefile-libbz2_so
make clean

Betydningen av konfigurasjonsalternativene:

-f Makefile-libbz2_so
  Dette vil føre til at Bzip2 bygges ved hjelp av en annen Make fil, i dette tilfellet Make filen -libbz2_so, som lager et dynamisk libbz2.so-bibliotek og kobler Bzip2-verktøyene mot den.

Kompiler og test pakken med:

make

Installer pakken:

make PREFIX=/tools install
cp -v bzip2-shared /tools/bin/bzip2
cp -av libbz2.so* /tools/lib
ln -sv libbz2.so.1.0 /tools/lib/libbz2.so

Detaljer om denne pakken finnes i kapittel 6.12.2, "Innholdet i Bzip2."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.19. Coreutils-8.31

Coreutils pakken inneholder verktøy for å vise og sette de grunnleggende systemegenskapene.

 

Omtrentlig byggetid: 0.7 SBU

Nødvendig diskplass: 157 MB


5.19.1. Installasjon av Coreutils

Forbered Coreutils for kompilering:

./configure --prefix=/tools --enable-install-program=hostname

Betydningen av konfigurasjonsalternativene:

--enable-install-program=hostname
  Dette gjør det mulig å bygge og installere hostname binary - det er deaktivert som standard, men er påkrevd av Perl-testserien.

Kompiler pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Coreutils testserien uansett, utfør du følgende kommando:

make RUN_EXPENSIVE_TESTS=yes check

Parameteren RUN_EXPENSIVE_TESTS = yes forteller testsuiten om å kjøre flere ekstra tester som anses som relativt dyre (med tanke på CPU-strøm og minnebruk) på noen plattformer, men generelt ikke er et problem på Linux.

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.54.2, "Innhold i Coreutils."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.20. Diffutils-3.7

Diffutils pakken inneholder programmer som viser forskjellene mellom filer eller kataloger.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 26 MB


5.20.1. Installasjon av Diffutils

Forbered Diffutils for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Diffutils testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.56.2, "Innholdet i diffutils."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.21. File-5.38

File pakken inneholder verktøy for å bestemme typen til en gitt fil eller filer.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 20 MB


5.21.1. Installasjon av File

Forbered File for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre File testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.14.2, "Innholdet i File."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.22. Findutils-4.7.0

Findutils pakken inneholder programmer for å finne filer. Disse programmene blir gitt for å rekursivt søke gjennom et katalogtre og for å opprette, vedlikeholde og søke i en database (ofte raskere enn det rekursive funnet, men upålitelig hvis databasen ikke har blitt oppdatert nylig).

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 39 MB


5.22.1. Installasjon av Findutils

Forbered Findutils for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Findutils testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.58.2, "Innholdet i Findutils."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.23. Gawk-5.0.1

Gawk pakken inneholder programmer for å manipulere tekstfiler.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 46 MB


5.22.1. Installasjon av Gawk

Forbered Gawk for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Gawk testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.57.2, "Innholdet i Gawk."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.24. Gettext-0.20.1

Gettext pakken inneholder verktøy for internasjonalisering og lokalisering. Disse tillater programmer å bli kompilert med NLS (Native Language Support), slik at de kan sende ut meldinger på brukerens morsmål.

 

Omtrentlig byggetid: 1.6 SBU

Nødvendig diskplass: 300 MB


5.24.1. Installasjon av Gettext

For vårt midlertidige sett med verktøy trenger vi bare å installere tre programmer fra Gettext.

Forbered Gettext for kompilering:

./configure --disable-shared

Betydningen av konfigurasjonsalternativet:

--disable-shared
   Vi trenger ikke installere noen av de delte Gettext-bibliotekene på dette tidspunktet, derfor er det ikke nødvendig å bygge dem.

Kompilere pakken:

make

På grunn av det begrensede miljøet anbefales det ikke å kjøre testsuiten på dette stadiet.

Installer programmene msgfmt, msgmerge og xgettext:

cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /tools/bin

Detaljer om denne pakken finnes i kapittel 6.47.2, "Innholdet i Gettext."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.25. Grep-3.4

Grep pakken inneholder programmer for å søke gjennom filer.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 25 MB


5.25.1. Installasjon av Grep

Forbered Grep for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Grep testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.34.2, "Innholdet i Grep."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.26. Gzip-1.10

Gzip pakken inneholder programmer for komprimering og dekomprimering av filer.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 10 MB


5.26.1. Installasjon av Gzip

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Gzip testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.62.2, "Innholdet i Gzip."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.27. Make-4.3

Make pakken inneholder et program for å sammenstille pakker.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 16 MB


5.27.1. Installasjon av Make

Forbered Make for kompilering:

./configure --prefix=/tools --without-guile

Betydningen av konfigurasjonsalternativet:

--without-guile
Dette sikrer at Make-4.3 ikke vil koble seg mot Guile-biblioteker, som kan være til stede i vertssystemet, men ikke vil være tilgjengelige i chroot-miljøet i neste kapittel.

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Make testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.67.2, "Innholdet i Make."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.28. Patch-2.7.6

Patch pakken inneholder et program for å endre eller opprette filer ved å bruke en “patch” fil som vanligvis er opprettet av diff programmet.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 13 MB


5.28.1. Installasjon av Patch

Forbered Patch for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Patch testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.68.2, "Innholdet i Patch."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.29. Perl-5.30.1

Perl pakken inneholder praktisk uttrekk og rapportspråk. (Practical Extraction and Report Language).

 

Omtrentlig byggetid: 1.5 SBU

Nødvendig diskplass: 275 MB


5.29.1. Installasjon av Perl

Forbered Perl for kompilering:

sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth

Betydningen av Konfigurer alternativene:

-des
  Dette er en kombinasjon av tre alternativer: -d bruker standardverdier for alle elementer; -e sikrer gjennomføring av alle oppgaver; -er lydløs ikke-essensiell utgang.

-Uloclibpth og -Ulocincpth
  Disse oppføringene definerer variabler som får konfigurasjonen til å søke etter lokalt installerte komponenter som kan finnes på vertssystemet.

Kompilere pakken:

make

Selv om Perl kommer med en testsuite, ville det være bedre å vente til den er installert i neste kapittel.

Bare noen få verktøy og biblioteker trenger å installeres på dette tidspunktet:

cp -v perl cpan/podlators/scripts/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/5.30.1
cp -Rv lib/* /tools/lib/perl5/5.30.1

Detaljer om denne pakken finnes i kapittel 6.41.2, "Innholdet i Perl."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.30. Python-3.8.1

Python 3 pakken inneholder Python utviklingsmiljøet. Det er nyttig for objektorientert programmering, skrive manus, prototype store programmer eller utvikle hele applikasjoner.

 

Omtrentlig byggetid: 1.3 SBU

Nødvendig diskplass: 409 MB


5.30.1. Installasjon av Python

Det er to pakkefiler hvis navn begynner med "python". Den å ekstrahere fra er Python-3.8.1.tar.xz (legg merke til den store bokstaven).

Denne pakken bygger først Python tolken, deretter noen standard Python moduler. Hovedskriptet for å bygge moduler er skrevet i Python, og bruker hardkodede stier til vertens /usr/include og /usr/lib katalogene. For å forhindre at de blir brukt, må du utføre:

sed -i '/def add_multiarch_paths/a \ return' setup.py

Forbered Python for kompilering:

./configure --prefix=/tools --without-ensurepip

Betydningen av konfigurasjonsalternativet:

--without-ensurepip
   Denne bryteren deaktiverer installasjonsprogrammet for Python-pakken, som ikke er nødvendig på dette stadiet.

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Diffutils testserien uansett, utfør du følgende kommando:

make check

Kompileringen er nå fullført. Testserien krever TK og og X Windows og kan ikke kjøres på dette tidspunktet.

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.51.2, "Innholdet i Python 3."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.31. Sed-4.8

Sed pakken inneholder en streameditor.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 21 MB


5.31.1. Installasjon av Sed

Forbered Sed for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Sed testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.29.2, "Innholdet i Sed."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.32. Tar-1.32

Tar pakken inneholder et arkiveringsprogram.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 38 MB


5.32.1. Installasjon av Tar

Forbered Tar for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Tar testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.70.2, "Innholdet i Tar."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.33. Texinfo-6.7

Texinfo-pakken inneholder programmer for å lese, skrive og konvertere infosider.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 104 MB


5.33.1. Installasjon av Texinfo

Forbered Texinfo for kompilering:

./configure --prefix=/tools

Som en del av konfigurasjonsprosessen utføres en test som indikerer en feil for TestXS_la-TestXS.lo. Dette er ikke relevant for LFS og bør ignoreres.

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Texinfo testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.71.2, "Innholdet i Texinfo."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.34. Xz-5.2.4

Xz pakken inneholder programmer for komprimering og dekomprimering av filer. Det gir muligheter for lzma og de nyere xz komprimeringsformatene. Komprimering av tekstfiler med xz gir en bedre komprimeringsprosent enn med de tradisjonelle gzip- eller bzip2-kommandoene.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 18 MB


5.34.1. Installasjon av Xz

Forbered Xz for kompilering:

./configure --prefix=/tools

Kompilere pakken:

make

Kompileringen er nå fullført. Som diskutert tidligere, er det ikke obligatorisk å kjøre testsuite for de midlertidige verktøyene her i dette kapitlet. Hvis du vil kjøre Xz testserien uansett, utfør du følgende kommando:

make check

Installer pakken:

make install

Detaljer om denne pakken finnes i kapittel 6.13.2, "Innholdet i Xz."

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.35. Stripping

 

Trinnene i denne delen er valgfrie, men hvis LFS partisjonen er ganske liten, er det en fordel å lære at unødvendige elementer kan fjernes. Kjørbare og biblioteker bygget så langt inneholder omtrent 70 MB unødvendige feilsøkingssymboler. Fjern disse symbolene med:

strip --strip-debug /tools/lib/*
/usr/bin/strip --strip-unneeded /tools/{,s}bin/*

Disse kommandoene vil hoppe over en rekke filer og rapportere at de ikke gjenkjenner filformatet. De fleste av disse er manus i stedet for binære filer. Bruker også systemets strip kommando for å inkludere binære strip i /tools.

Pass på at du ikke bruker --strip-unneeded på bibliotekene. De statiske ville bli ødelagt og verktøykjetting pakkene må bygges på nytt.

For å spare mer, fjern dokumentasjonen:

rm -rf /tools/{,share}/{info,man,doc}

Fjern unødvendige filer:

find /tools/{lib,libexec} -name \*.la -delete

På dette tidspunktet bør du ha minst 3 GB ledig plass i $LFS som kan brukes til å bygge og installere Glibc og Gcc i neste fase. Hvis du kan bygge og installere Glibc, kan du også bygge og installere resten.

Forrige Hjem Neste
5. Konstruere et midlertidig system

5.36. Endring av eierskap

Kommandoene i resten av denne boken må utføres mens du er logget på som bruker root og ikke lenger som bruker lfs. Dobbeltkontroller også at $LFS er satt i root sitt miljø

.For øyeblikket eies katalogen $LFS/tools av brukeren lfs, en bruker som bare eksisterer på vertssystemet. Hvis katalogen $LFS/tools beholdes som den er, eies filene av en bruker-ID uten en tilsvarende konto. Dette er farlig fordi en brukerkonto som ble opprettet senere, kan få samme bruker-ID og ville eie katalogen $LFS/tools og alle filene der, og dermed eksponere disse filene for mulig skadelig manipulering.

For å unngå dette problemet, kan du legge til lfs brukeren til det nye LFS systemet senere når du oppretter filen /etc/passwd, og sørge for å tildele den samme bruker og gruppe ID-er som på vertssystemet. En bedre måte er å endre eierforholdet til katalogen $LFS/tools til bruker root ved å kjøre følgende kommando:

chown -R root:root $LFS/tools

Selv om katalogen $LFS/tools kan slettes når LFS systemet er ferdig, kan den beholdes for å bygge ytterligere LFS systemer av samme bokversjon. Hvordan man best tar sikkerhetskopi av $LFS/tools er et spørsmål om personlig preferanse.

Hvis du har tenkt å beholde de midlertidige verktøyene for å bygge fremtidige LFS systemer, er det nå på tide å sikkerhetskopiere dem. Etterfølgende kommandoer i kapittel 6 vil endre verktøyene som er på plass, og gjøre dem ubrukelige for fremtidige bygg.

Forrige Hjem Neste

6. Installere grunnleggende systemprogramvare

I dette kapittelet går vi inn på byggeplassen og begynner å konstruere LFS systemet for alvor.

6. Installere grunnleggende systemprogramvare

6.1. Introduksjon

I dette kapittelet går vi inn på byggeplassen og begynner å konstruere LFS systemet for alvor. Det vil si at vi chrooter inn i det midlertidige Linux-systemet, gjør noen få endelige forberedelser og begynner deretter å installere pakkene.

Installasjonen av denne programvaren er enkel. Selv om installasjonsinstruksjonene i mange tilfeller kan gjøres kortere og mer generiske, har vi valgt å gi de fullstendige instruksjonene for hver pakke for å minimere mulighetene for feil. Nøkkelen til å lære hva som får et Linux-system til å fungere, er å vite hva hver pakke brukes til og hvorfor du (eller systemet) kan trenge den.

Vi anbefaler ikke å bruke optimaliseringer. De kan få et program til å kjøre litt raskere, men det kan også føre til problemer med kompilering og problemer når du kjører programmet. Hvis en pakke nekter å kompilere når du bruker optimalisering, kan du prøve å kompilere den uten optimalisering og se om det løser problemet. Selv om pakken kompilerer når du bruker optimalisering, er det risiko for at den kan ha blitt satt sammen feil på grunn av de komplekse interaksjonene mellom kode og byggeverktøy. Merk også at alternativene -march og -mtune med verdier som ikke er spesifisert i boken, ikke er testet. Dette kan forårsake problemer med verktøykjettingpakkene (Binutils, GCC og Glibc). De små potensielle gevinstene som oppnås ved bruk av kompilatoroptimalisering oppveies ofte av risikoen. Førstegangsbyggere av LFS oppfordres til å bygge uten tilpassede optimaliseringer. Det påfølgende systemet vil fortsatt kjøre veldig raskt og være stabilt på samme tid.

Rekkefølgen pakker er installert i dette kapittelet, må følges strengt for å sikre at intet program tilfeldigvis skaffer seg en bane som refererer hardkoblet til /tools. Av samme grunn må du ikke sammenstille separate pakker parallelt. Å sammenstille parallelt kan spare tid (spesielt på dual-CPU-maskiner), men det kan føre til at et program inneholder en fast koblet bane til /tools, noe som vil føre til at programmet slutter å fungere når den katalogen fjernes.

Før installasjonsinstruksjonene gir hver installasjonsside informasjon om pakken, inkludert en kortfattet beskrivelse av hva den inneholder, omtrent hvor lang tid det vil ta å bygge, og hvor mye diskplass som kreves i løpet av denne byggeprosessen. Etter installasjonsinstruksjonene er det en liste over programmer og biblioteker (sammen med korte beskrivelser av disse) som pakken installerer.

SBU verdiene og den nødvendige diskplassen inkluderer data fra testserien for alle aktuelle pakker i kapittel 6.

6.1.1. Om biblioteker

Generelt fraråder LFS redaksjonene å bygge og installere statiske biblioteker. Det opprinnelige formålet for de fleste statiske biblioteker er gjort foreldet i et moderne Linux-system. I tillegg kan det å koble et statisk bibliotek til et program være skadelig. Hvis det er nødvendig med en oppdatering til biblioteket for å fjerne et sikkerhetsproblem, må alle programmer som bruker det statiske biblioteket kobles til det nye biblioteket. Siden bruken av statiske biblioteker ikke alltid er åpenbar, er det ikke sikkert at de relevante programmene (og prosedyrene som er nødvendige for å utføre koblingen) ikke er kjent.

I prosedyrene i kapittel 6 fjerner eller deaktiverer vi installasjon av de fleste statiske biblioteker. Vanligvis gjøres dette ved å sende et --disable-static alternativ til configure. I andre tilfeller er det nødvendig med alternative midler. I noen få tilfeller, spesielt glibc og gcc, er bruken av statiske biblioteker fortsatt avgjørende for den generelle pakkeoppbyggingsprosessen.

For en mer fullstendig diskusjon av biblioteker, se diskusjonen Biblioteker: Statisk eller delt? Libraries: Static or shared? i BLFS-boka.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.2. Klargjør virtuelle kjernefilsystemer

Ulike filsystemer som eksporteres av kjernen brukes til å kommunisere til og fra selve kjernen. Disse filsystemene er virtuelle ved at det ikke brukes diskplass for dem. Innholdet i filsystemene ligger i minnet.

Begynn med å lage kataloger som filsystemene skal monteres på:

mkdir -pv $LFS/{dev,proc,sys,run}

6.2.1. Opprette de første enhetsnoder

Når kjernen starter systemet, krever det tilstedeværelsen av noen få enhetsnoder, spesielt konsoll- og nullenheter. Enhetsnodene må opprettes på harddisken slik at de er tilgjengelige før udevd er startet, og i tillegg når Linux startes med init=/bin/bash. Opprett enhetene ved å kjøre følgende kommandoer:

mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3

6.2.2. Montering og befolkning av /dev

Den anbefalte metoden for å fylle /dev katalogen med enheter er å montere et virtuelt filsystem (for eksempel tmpfs) i /dev katalogen, og la enhetene bli opprettet dynamisk på det virtuelle filsystemet når de blir oppdaget eller det gis tilgang til de. Enhetene opprettes vanligvis under oppstartprosessen av Udev. Siden dette nye systemet ennå ikke har Udev og ennå ikke har blitt startet opp, er det nødvendig å montere og befolke /dev manuelt. Dette oppnås ved å binde og montere vertssystemets /dev katalog. En bind mount er en spesiell type montering som lar deg lage et speil av en katalog eller festepunkt til et annet sted. Bruk følgende kommando for å oppnå dette:

mount -v --bind /dev $LFS/dev

6.2.3. Montering av virtuelle kjernefilsystemer

Monter nå de gjenværende virtuelle kjernefilsystemene:

mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

Betydningen av monteringsalternativene for devpts:

gid=5
   Dette sikrer at alle devpts opprettede enhetsnoder eies av gruppe ID 5. Dette er IDen vi senere vil bruke for tty gruppen. Vi bruker gruppe-ID i stedet for et navn, siden vertssystemet kan bruke en annen ID for sin tty gruppe.

mode=0620
  Dette sikrer at alle devpts opprettede enhetsnoder har modus 0620 (bruker lesbar og skrivbar, gruppe skrivbar). Sammen med alternativet over sikrer dette at devpts vil opprette enhetsnoder som oppfyller kravene til grantpt (), noe som betyr at Glibc pt_chown helper binær (som ikke er installert som standard) ikke er nødvendig.

I noen vertssystemer er /dev/shm en symbolsk lenke til /run/shm. The /run tmpfs var montert over, så i dette tilfellet trengs det bare å opprette en katalog.

if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
fi
Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.3. Pakkehåndtering

Pakkehåndtering er et ofte etterspurt tillegg til LFS boken. En pakkebehandler gjør det mulig å spore installasjonen av filer, noe som gjør det enkelt å fjerne og oppgradere pakker. I tillegg til binære filer og bibliotekfiler, vil en pakkebehandler håndtere installasjonen av konfigurasjonsfiler. Før du begynner å lure, NEI - denne delen vil ikke snakke om eller anbefale noen spesiell pakkebehandler. Det det gir er en sammenstilling av de mer populære teknikkene og hvordan de fungerer. Den perfekte pakkebehandleren for deg kan være blant disse teknikkene, eller være en kombinasjon av to eller flere av disse teknikkene. Denne delen omtaler kort problemer som kan oppstå når du oppgraderer pakker.

Noen grunner til at ingen pakkebehandlere er nevnt i LFS eller BLFS inkluderer:

Det er noen hint skrevet om emnet pakkehåndtering. Besøk Hints prosjektet og se om en av dem passer ditt behov.

6.3.1. Oppgraderingsproblemer

En Package Manager gjør det enkelt å oppgradere til nyere versjoner når de slippes. Vanligvis kan instruksjonene i LFS og BLFS Book brukes til å oppgradere til de nyere versjonene. Her er noen punkter du bør være klar over når du oppgraderer pakker, spesielt på et kjørende system.

6.3.2. Teknikker for pakkehåndtering

Følgende er noen vanlige pakkehåndteringsteknikker. Før du tar en beslutning om en pakkebehandler, bør du undersøke de forskjellige teknikkene, spesielt ulempene med den spesielle ordningen.

6.3.2.1. Alt er i hodet mitt!

Ja, dette er en pakkehåndteringsteknikk. Noen mennesker finner ikke behovet for en pakkehåndterer fordi de kjenner pakkene intimt og vet hvilke filer som er installert av hver pakke. Noen brukere trenger heller ikke pakkehåndtering fordi de planlegger å gjenoppbygge hele systemet når en pakke endres.

6.3.2.2. Installer i separate kataloger

Dette er en forenklet pakkehåndtering som ikke trenger noen ekstra pakke for å administrere installasjonene. Hver pakke er installert i en egen katalog. For eksempel er pakke foo-1.1 installert i /usr/pkg/foo-1.1 og en symlink er laget fra /usr/pkg/foo til /usr/pkg/foo-1.1. Når du installerer en ny versjon foo-1.2, installeres den i /usr/pkg/foo-1.2 og den forrige symlenken erstattes av en symlink til den nye versjonen.

Miljøvariabler som PATH, LD_LIBRARY_PATH, MANPATH, INFOPATH og CPPFLAGS må utvides til å omfatte /usr/pkg/foo. For mer enn noen få pakker blir denne ordningen uhåndterbar.

Dette er en variant av den forrige pakkehåndteringsteknikken. Hver pakke er installert på samme måte som forrige skjema. Men i stedet for å lage symlink, blir hver fil symlinket til /usr hierarkiet. Dette fjerner behovet for å utvide miljøvariablene. Selv om symlinkene kan opprettes av brukeren for å automatisere opprettelsen, er det blitt skrevet mange pakkeforvaltere ved bruk av denne tilnærmingen. Noen få av de populære inkluderer Stow, Epkg, Graft og Depot.

Installasjonen må forfalskes, slik at pakken tror at den er installert i /usr, men i virkeligheten er den installert i /usr/pkg hierarkiet. Å installere på denne måten er vanligvis ikke en triviell oppgave. Tenk for eksempel på at du installerer en pakke libfoo-1.1. Følgende instruksjoner installerer ikke pakken ordentlig:

./configure --prefix=/usr/pkg/libfoo/1.1
make
make install

Installasjonen vil fungere, men de avhengige pakkene lenker kanskje ikke til libfoo som du forventer. Hvis du sammenstiller en pakke som lenker mot libfoo, kan du legge merke til at den er koblet til /usr/pkg/libfoo/1.1/lib/libfoo.so.1 i stedet for /usr/lib/libfoo.so.1 som du forventer . Den riktige tilnærmingen er å bruke DESTDIR-strategien for å falske installasjonen av pakken. Denne tilnærmingen fungerer som følger:

./configure --prefix=/usr
make
make DESTDIR=/usr/pkg/libfoo/1.1 install

De fleste pakker støtter denne tilnærmingen, men det er noen som ikke gjør det. For pakker som ikke er kompatible, kan det hende du må installere pakken manuelt, eller du kan finne ut at det er lettere å installere noen problematiske pakker i /opt.

6.3.2.4. Tidsstempel basert

I denne teknikken blir en fil tidsstemplet før installasjonen av pakken. Etter installasjonen kan en enkel bruk av finnkommandoen med de aktuelle alternativene generere en logg over alle filene som er installert etter at tidsstempelfilen ble opprettet. En pakkesjef skrevet med denne tilnærmingen er install-log.

Selv om denne ordningen har fordelen av å være enkel, har den to ulemper. Hvis filene blir installert med en annen tidsstempel enn gjeldende klokkeslett under installasjonen, blir de ikke sporet av pakkehåndtereren. Denne ordningen kan også bare brukes når en pakke er installert om gangen. Loggene er ikke pålitelige hvis to pakker blir installert på to forskjellige konsoller.

6.3.2.5. Sporing av installasjonsskript

I denne tilnærmingen blir kommandoene som installasjonsskriptene utfører registrert. Det er to teknikker som man kan bruke:

LD_PRELOAD-miljøvariabelen kan settes til å peke på et bibliotek som skal lastes inn før installasjon. Under installasjonen sporer dette biblioteket pakkene som blir installert ved å knytte seg til forskjellige kjørbare filer som cp, installere, mv og spore systemanropene som endrer filsystemet. For at denne tilnærmingen skal fungere, må alle kjørbare filer kobles dynamisk uten suid eller sgid bit. Forlasting av biblioteket kan forårsake noen uønskede bivirkninger under installasjonen. Derfor anbefales det at man utfører noen tester for å sikre at pakkebehandleren ikke bryter noe og logger alle passende filer.

Den andre teknikken er å bruke strace, som logger alle systemanrop som ble utført under utførelsen av installasjonsskriptene.

6.3.2.6. Opprette pakkearkiv

I dette skjemaet blir pakkeinstallasjonen forfalsket til et eget tre som beskrevet i Symlink pakkeadministrasjonen. Etter installasjonen opprettes et pakkearkiv ved hjelp av de installerte filene. Dette arkivet brukes deretter til å installere pakken enten på den lokale maskinen eller kan til og med brukes til å installere pakken på andre maskiner.

Denne tilnærmingen brukes av de fleste av pakkeforvalterne som finnes i kommersielle distribusjoner. Eksempler på pakkeforvaltere som følger denne tilnærmingen er RPM (som for øvrig kreves av Linux Standard Base-spesifikasjonen), pkg-utils, Debian's apt og Gentoos Portage-system. Et hint som beskriver hvordan man tar i bruk denne stilen for pakkeadministrasjon for LFS-systemer, finner du på http://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt.

Oppretting av pakkefiler som inkluderer avhengighetsinformasjon er kompleks og er utenfor LFS omfanget.

Slackware bruker et tar basert system for pakkearkiver. Dette systemet håndterer ikke målrettet pakkeavhengighet slik mer komplekse pakkeforvaltere gjør. For detaljer om pakkehåndtering av Slackware, se http://www.slackbook.org/html/package-management.html.

6.3.2.7. Brukerbasert styring

Denne ordningen, unik for LFS, ble utviklet av Matthias Benkmann, og er tilgjengelig fra Hints Prosjektet. I denne ordningen blir hver pakke installert som en egen bruker på standardplasseringene. Filer som tilhører en pakke identifiseres enkelt ved å sjekke bruker-IDen. Funksjonene og manglene ved denne tilnærmingen er for kompliserte til å beskrive i dette avsnittet. For detaljer, se antydningen på http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt.

6.3.3. Distribusjon av LFS på flere systemer

En av fordelene med et LFS system er at det ikke er noen filer som avhenger av plasseringen av filer på et disksystem. Kloning av et LFS bygg til en annen datamaskin med samme arkitektur som basesystemet er så enkelt som å bruke tar på LFS partisjonen som inneholder rotkatalogen (ca. 250MB ukomprimert for et basis LFS bygg), kopiere den filen via nettverksoverføring eller CD- ROM til det nye systemet og utvide det. Fra det tidspunktet vil noen få konfigurasjonsfiler måtte endres. Konfigurasjonsfiler som kanskje må oppdateres inkluderer: /etc/hosts,/etc/fstab, /etc/passwd, /etc/group, /etc/shadow, /etc/ld.so.conf, /etc/sysconfig/rc .site, /etc/sysconfig /network og /etc/sysconfig/ifconfig.eth0.

Det kan hende at det må bygges en tilpasset kjerne for det nye systemet, avhengig av forskjeller i systemmaskinvare og den opprinnelige kjernekonfigurasjonen.

Det har vært noen rapporter om problemer når du kopierte mellom lignende, men ikke identiske arkitekturer. For eksempel er instruksjonssettet for et Intel-system ikke identisk med en AMD-prosessor, og senere versjoner av noen prosessorer kan ha instruksjoner som ikke er tilgjengelige i tidligere versjoner.

Endelig må det nye systemet startes via Seksjon 8.4, "Bruke GRUB til å sette opp startprosessen".

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.4. Gå inn i Chroot miljøet

Det er på tide å komme inn i chroot miljøet for å begynne å bygge og installere det endelige LFS systemet. Som bruker root, kjør følgende kommando for å gå inn i miljøet som for øyeblikket er befolket med de midlertidige verktøyene:

chroot "$LFS" /tools/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h

Alternativet -i gitt env kommandoen vil fjerne alle variabler i chroot miljøet. Etter det er det bare HOME-, TERM-, PS1- og PATH-variablene som er satt igjen. TERM=$TERM konstruksjonen vil sette TERM variabelen i chroot til samme verdi som utenfor chroot. Denne variabelen er nødvendig for at programmer som vim og less skal fungere ordentlig. Hvis det er behov for andre variabler, for eksempel CFLAGS eller CXXFLAGS, er dette et bra sted å stille dem inn igjen.

Fra dette tidspunktet er det ikke nødvendig å bruke LFS variabelen lenger, fordi alt arbeid vil være begrenset til LFS filsystemet. Dette er fordi Bash-skallet blir fortalt at $LFS nå er rotkatalogen (/).

Legg merke til at /tools/bin kommer sist i PATH. Dette betyr at et midlertidig verktøy ikke lenger vil bli brukt når den endelige versjonen er installert. Dette skjer når skallet ikke "husker" plasseringen av utførte binære filer - av denne grunn slås hashing av ved å gi + h-alternativet til bash.

Merk at bash ledeteksten vil si I have no name! Dette er normalt fordi filen /etc/passwd ikke er opprettet ennå.

Det er viktig at alle kommandoene gjennom resten av dette kapitlet og de følgende kapitlene kjøres fra chroot miljøet. Hvis du forlater dette miljøet av en eller annen grunn (for eksempel omstart), må du forsikre deg om at de virtuelle kjernefilsystemene er montert som forklart i avsnitt 6.2.2, "Montering og befolkning /dev" og avsnitt 6.2.3, "Montering av virtuelle kjernefilsystemer" og skriv inn chroot igjen før du fortsetter med installasjonen.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.5. Opprette kataloger

Det er på tide å lage en viss struktur i LFS filsystemet. Lag et standard katalogtre ved å skrive inn følgende kommandoer:

mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v /usr/libexec
mkdir -pv /usr/{,local/}share/man/man{1..8}
mkdir -v /usr/lib/pkgconfig

case $(uname -m) in
x86_64) mkdir -v /lib64 ;;
esac

mkdir -v /var/{log,mail,spool}
ln -sv /run /var/run
ln -sv /run/lock /var/lock
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}

Kataloger er som standard opprettet med tillatelsesmodus 755, men dette er ikke ønskelig for alle kataloger. I kommandoene ovenfor blir det gjort to endringer - en til hjemmekatalogen til bruker root, og en annen i katalogene for midlertidige filer.

Den første modusendringen sikrer at ikke bare noen kan komme inn i /root katalogen - det samme som en vanlig bruker ville gjort med hjemmekatalogen. Den andre modusendringen sørger for at enhver bruker kan skrive til /tmp og /var/tmp katalogene, men ikke kan fjerne en annen brukers filer fra dem. Det siste er forbudt av den såkalte “klebrig biten”, den høyeste biten (1) i 1777-bitersmasken.

6.5.1. FHS samsvarsnotat

Katalogtreet er basert på Filesystem Hierarchy Standard (FHS) (tilgjengelig på https://refspecs.linuxfoundation.org/fhs.shtml). FHS spesifiserer også valgfri eksistens for noen kataloger som /usr/local/games og /usr/share/games. Vi oppretter bare katalogene som er nødvendige. Imidlertid kan du opprette disse katalogene.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.6. Opprette essensielle filer og symlinker

Noen programmer bruker faste koblinger til programmer som ikke eksisterer ennå. For å tilfredsstille disse programmene, oppretter du en rekke symbolske lenker som vil bli erstattet av ekte filer i løpet av dette kapitlet etter at programvaren er installert:

ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
ln -sv /tools/bin/{env,install,perl,printf} /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib

ln -sv bash /bin/sh

Formålet med hver lenke:

/bin/bash
   Mange bash skripter spesifiserer /bin/bash.

/bin/cat
  Dette stinavnet er hardkodet i Glibcs konfigurasjonsskript.

/bin/dd
  Stien til dd blir hardkodet i verktøyet /usr/bin/libtool.

/bin/echo
  Dette for å tilfredsstille en av testene i Glibcs testsuite, som forventer /bin/echo.

/usr/bin/env
  Dette stinavnet er hardkodet i noen pakkers oppbyggingsprosedyrer.

/usr/bin/install
  Stien til install vil bli hardkodet inn i filen /usr/lib/bash/Makefile.inc.

/bin/ln
  Stien til ln vil bli hardkodet inn i /usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl filen.

/bin/pwd
  Noen konfigurasjonsskripter, spesielt Glibc, har dette stinavnet hardkodet.

/bin/rm
  Stien til rm vil bli hardkodet inn i /usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl filen.

/bin/stty
  Dette stinavnet er hardkodet til Expect, derfor er det nødvendig for Binutils og GCC-testsuiter.

/usr/bin/perl
  Mange Perl skripter hardkoder denne stien til perl programmet.

/usr/lib/libgcc_s.so{,.1}
  Glibc trenger dette for at pthreads biblioteket skal fungere.

/usr/lib/libstdc++{,.6}
  Dette trengs av flere tester i Glibcs testsuite, så vel som for C++ støtte i GMP.

/bin/sh
  Mange skall skript hardkoder /bin/sh.

Historisk sett opprettholder Linux en liste over monterte filsystemer i filen /etc/mtab. Moderne kjerner vedlikeholder denne listen internt og eksponerer den for brukeren via /proc filsystemet. For å tilfredsstille verktøy som forventer tilstedeværelsen av /etc/mtab, oppretter du følgende symbolsk lenke:

ln -sv /proc/self/mounts /etc/mtab

For at bruker root skal kunne logge på og for at navnet "root" skal gjenkjennes, må det være relevante oppføringer i /etc/passwd og /etc/group filene.

Opprett /etc/passwd filen ved å kjøre følgende kommando:

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

Det faktiske passordet for root (“x” som brukes her er bare en plassholder) vil bli satt senere.

Opprett /etc/group filen ved å kjøre følgende kommando:

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
wheel:x:97:
nogroup:x:99:
users:x:999:
EOF

De opprettede gruppene er ikke en del av noen standard, de er grupper som delvis avgjøres av kravene til Udev konfigurasjonen i dette kapittelet, og delvis etter en vanlig konvensjon satt av en rekke eksisterende Linux-distribusjoner. I tillegg er noen testsuiter avhengige av bestemte brukere eller grupper. Linux Standard Base (LSB, tilgjengelig på http://www.linuxbase.org) anbefaler bare at foruten gruppen root med en gruppe-ID (GID) på 0, er en gruppe bin med en GID på 1 til stede. Alle andre gruppenavn og GID-er kan fritt velges av systemadministratoren siden velskrevne programmer ikke er avhengig av GID-nummer, men heller bruker gruppens navn.

For å fjerne “I have no name!”, start et nytt skall. Siden en full Glibc ble installert i kapittel 5 og /etc/passwd og /etc/group filene er opprettet, vil brukernavn og gruppe navnoppløsning nå fungere:

exec /tools/bin/bash --login +h

Legg merke til bruken av +h direktivet. Dette forteller bash om ikke å bruke sin interne sti hashing. Uten dette direktivet, ville bash huske stiene til binærene den har utført. For å sikre bruk av de nylig kompilerte binærene så snart de er installert, vil +h direktivet bli brukt i løpet av dette kapitlet.

Påloggings-, agetty- og init-programmene (og andre) bruker en rekke loggfiler for å registrere informasjon, for eksempel hvem som var logget inn i systemet og når. Disse programmene vil imidlertid ikke skrive til loggfilene hvis de ikke allerede eksisterer. Initialiser loggfilene og gi dem riktige tillatelser:

touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp

Filen /var/log/wtmp registrerer alle pålogginger og utlogginger. Filen /var/log/lastlog registrerer når hver bruker sist logget inn. /var/log/faillog registrerer mislykkede påloggingsforsøk. Filen /var/log/btmp registrerer de ugyldige påloggingsforsøkene.

Filen /run/utmp registrerer brukerne som for øyeblikket er logget inn. Denne filen opprettes dynamisk i oppstartsskriptene.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.7. Linux-5.5.3 API Deklarasjoner

Linux API Deklarasjon (i linux-5.5.3.tar.xz) eksponerer kjernens API for bruk av Glibc.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 1 GB

6.7.1. Installasjon av Linux API Deklarasjoner

Linux-kjernen må eksponere et API (Application Programming Interface) for systemets C-bibliotek (Glibc i LFS) for å bli brukt. Dette gjøres ved å rense forskjellige C-headerfiler som sendes i Linux-kjerne-tarballen.

Forsikre deg om at det ikke er foreldede filer og avhengigheter fra tidligere aktivitet:

make mrproper

Nå trekker ut de bruker synlige kjerneoverskriftene fra kilden. Det anbefalte målet "headers_install" kan ikke brukes, fordi det krever rsync, som ikke er tilgjengelig i /tools. Topptekstene blir først plassert i ./usr, deretter blir noen filer som brukes av kjerneutviklerne fjernet, deretter kopieres filene til deres endelige beliggenhet.

make headers
find usr/include -name '.*' -delete
rm usr/include/Makefile
cp -rv usr/include/* /usr/include

6.7.2. Innholdet i Linux API Deklarasjoner

Installerte deklarasjoner: /usr/include/asm/*.h, /usr/include/asm-generic/*.h, /usr/include/drm/*.h, /usr/include/linux/*.h, /usr/include/misc/*.h, /usr/include/mtd/*.h, /usr/include/rdma/*.h, /usr/include/scsi/*.h, /usr/include/sound/*.h, /usr/include/video/*.h, and /usr/include/xen/*.h

Installerte mapper: /usr/include/asm, /usr/include/asm-generic, /usr/include/drm, /usr/include/linux, /usr/include/misc, /usr/include/mtd, /usr/include/rdma, /usr/include/scsi, /usr/include/sound, /usr/include/video, and /usr/include/xen

 

Korte beskrivelser

 /usr/include/asm/*.h - Linux API ASM Deklarasjoner

/usr/include/asm-generic/*.h - Linux API ASM Generelle Deklarasjoner

/usr/include/drm/*.h - Linux API DRM Deklarasjoner

/usr/include/linux/*.h - The Linux API Linux Deklarasjoner

/usr/include/misc/*.h - Linux API Diverse Deklarasjoner

/usr/include/mtd/*.h - Linux API MTD Deklarasjoner

/usr/include/rdma/*.h - Linux API RDMA Deklarasjoner

/usr/include/scsi/*.h - Linux API SCSI Deklarasjoner

/usr/include/sound/*.h - Linux API Sound Deklarasjoner

/usr/include/video/*.h - Linux API Video Deklarasjoner

/usr/include/xen/*.h - Linux API Xen Deklarasjoner

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.8. Man-pages-5.05

Man-pages pakken inneholder over 2200 man sider.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 31 MB

6.8.1. Installasjon av Man-pages

Installer Man-pages ved å kjøre:

make install

6.8.2. Innholdet av Man-pages

Installerte filer: forskjellige man sider

 

Kort beskrivelse

man pages  - Beskriv C programmeringsspråkfunksjoner, viktige enhetsfiler og viktige konfigurasjonsfiler

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.9. Glibc-2.31

Glibc pakken inneholder hovedbiblioteket. Dette biblioteket inneholder de grunnleggende rutinene for tildeling av minne, søking i kataloger, åpning og lukking av filer, lesing og skriving av filer, strenghåndtering, mønster matching, aritmetikk og så videre.

 

Omtrentlig byggetid: 19 SBU

Nødvendig diskplass: 5.5 GB

6.9.1. Installasjon av Glibc

Glibc byggesystem er selvforsynt og vil installere perfekt, selv om kompilatorens spesifikasjonsfil og linker fremdeles peker på /tools. Spesifikasjonene og linkeren kan ikke justeres før Glibc installasjonen fordi Glibc autoconf tester ville gi falske resultater og målet om å oppnå et rent bygg vil ikke oppnås.

Noen av Glibc programmene bruker den ikke FHS kompatible /var/db mappen for å lagre runtime-data. Bruk følgende oppdatering for å få slike programmer til å lagre runtime-data på FHS kompatible steder:

patch -Np1 -i ../glibc-2.31-fhs-1.patch

Lag en symlink for LSB samsvar. I tillegg, for x86_64, oppretter du en kompatibilitetssymlink som kreves for at den dynamiske lasteren skal fungere korrekt:

case $(uname -m) in
i?86) ln -sfv ld-linux.so.2 /lib/ld-lsb.so.3
        ;;
        x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64
                      ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
        ;;
esac

Glibc dokumentasjonen anbefaler å bygge Glibc i en dedikert bygge mappe:

mkdir -v build
cd build

Forbered Glibc for kompilering:

CC="gcc -ffile-prefix-map=/tools=/usr" \
../configure --prefix=/usr \
                     --disable-werror \
                     --enable-kernel=3.2 \
                     --enable-stack-protector=strong \
                     --with-headers=/usr/include \
libc_cv_slibdir=/lib

Betydningen av alternativene og nye konfigurasjonsparametere:

CC="gcc -ffile-prefix-map=/tools=/usr"
   Som resultat av kompileringen få GCC til å registrere eventuelle referanser til filer i /tools som om filene bodde i /usr. Dette unngår introduksjon av ugyldige stier i feilsøkingssymboler.

--disable-werror
  Dette alternativet deaktiverer -Werror alternativet gitt til GCC. Dette er nødvendig for å kunne kjøre testserien.

--enable-stack-protector=strong
  Dette alternativet øker systemsikkerheten ved å legge til ekstra kode for å sjekke om buffer overflows, for eksempel stack smashing attacks.

--with-headers=/usr/include
  Dette alternativet forteller byggesystemet hvor du finner kjerne API deklarasjoner. Disse deklarasjonene søkes som standard i /tools/include.

libc_cv_slibdir=/lib
  Denne variabelen angir riktig bibliotek for alle systemer. Vi ønsker ikke at lib64 skal brukes.

Kompilere pakken:

make

I denne delen anses testsuiten for Glibc som kritisk. Ikke hopp over det under noen omstendigheter.

Vanligvis er det noen få tester som ikke består. Testfeilene som er oppført nedenfor er vanligvis trygge å ignorere.

case $(uname -m) in
    i?86) ln -sfnv $PWD/elf/ld-linux.so.2 /lib ;;
    x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
esac

Den symbolske lenken over er nødvendig for å kjøre testene på dette stadiet av bygningen i chroot-miljøet. Det vil bli overskrevet i installasjonsfasen nedenfor.

make check

Du kan se noen testfeil. Glibc testpakken er noe avhengig av vertssystemet. Dette er en liste over de vanligste problemene som er sett for noen versjoner av LFS:

Selv om det er en ufarlig melding, vil installasjonsfasen til Glibc klage på fraværet av /etc/ld.so.conf. Forhindre denne advarselen med:

touch /etc/ld.so.conf

Fiks den genererte Makefile for å hoppe over en unødvendig tilregnelighetskontroll som mislykkes i LFS delvise miljø:

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

Installer pakken:

make install

Installer konfigurasjonsfilen og runtime mappen for nscd:

cp -v ../nscd/nscd.conf /etc/nscd.conf
mkdir -pv /var/cache/nscd

Deretter installerer du locales som kan få systemet til å svare på et annet språk. Ingen av locales er påkrevd, men hvis noen av dem mangler, ville testsuitene til fremtidige pakker hoppe over viktige testcases.

Individuelle regionaldata kan installeres ved hjelp av localedef programmet. F.eks. Den første localedef kommandoen nedenfor kombinerer /usr/share/i18n/locales/cs_CZ tegn-uavhengig språkdefinisjon med /usr/share/i18n/charmaps/UTF-8.gz tegntabell definisjonen og legger resultatet til /usr/lib/locale/locale-archive fil. Følgende instruksjoner vil installere det minste sett med regionaldata som er nødvendige for optimal dekning av tester:

mkdir -pv /usr/lib/locale
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i el_GR -f ISO-8859-7 el_GR
localedef -i en_GB -f UTF-8 en_GB.UTF-8
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i it_IT -f UTF-8 it_IT.UTF-8
localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true
localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS

I tillegg kan du installere språk for ditt eget land, språk og tegnsett.

Alternativt kan du installere alle regionaldata som er oppført i glibc-2.31 /localedata/SUPPORTED filen (den inkluderer alle steder angitt ovenfor og mange flere) samtidig med følgende tidkrevende kommando:

make localedata/install-locales

Bruk deretter localedef kommandoen til å opprette og installere regionaldata som ikke er oppført i glibc-2.31 /localedata/SUPPORTED filen i det usannsynlige tilfellet du trenger dem.

Glibc bruker nå libidn2 når de skal løse internasjonaliserte domenenavn. Dette er en kjøre tidsavhengighet. Hvis denne funksjonen er nødvendig, er instruksjonene for å installere libidn2 på BLFS libidn2 siden.

6.9.2. Konfigurere Glibc

6.9.2.1. Legge til nsswitch.conf

Filen /etc/nsswitch.conf må opprettes fordi standardverdiene fra Glibc ikke fungerer bra i et nettverksmiljø.

Opprett en ny fil /etc/nsswitch.conf ved å kjøre følgende:

cat > /etc/nsswitch.conf << "EOF"

# Begin /etc/nsswitch.conf

 

passwd: files
group: files
shadow: files

 

hosts: files dns
networks: files

 

protocols: files
services: files
ethers: files
rpc: files

 

# End /etc/nsswitch.conf
EOF

6.9.2.2. Legge til data for tidssoner

Installer og konfigurer tidssonedataene med følgende:

tar -xf ../../tzdata2019c.tar.gz

 

ZONEINFO=/usr/share/zoneinfo
mkdir -pv $ZONEINFO/{posix,right}

 

for tz in etcetera southamerica northamerica europe africa antarctica \
               asia australasia backward pacificnew systemv; do
      zic -L /dev/null -d $ZONEINFO ${tz}
      zic -L /dev/null -d $ZONEINFO/posix ${tz}
      zic -L leapseconds -d $ZONEINFO/right ${tz}
done

 

cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p America/New_York
unset ZONEINFO

Betydningen av zic kommandoene:

zic -L /dev/null ...
   Dette skaper posix tidssoner, uten sprang sekunder. Det er konvensjonelt å legge disse i både zoneinfo og zoneinfo/posix. Det er nødvendig å sette POSIX-tidssonene i zoneinfo, ellers vil forskjellige testsuiter rapportere feil. På et innebygd system, der det er lite plass og du ikke har tenkt å oppdatere tidssonene, du kan spare 1,9 MB ved å ikke bruke posix mappen, men noen applikasjoner eller testsuiter kan gi noen feil.

zic -L leapseconds ...
   Dette skaper riktige tidssoner, inkludert sprang sekunder. På et innebygd system, der det er lite plass og du ikke har tenkt å oppdatere tidssonene, eller bry deg om riktig tid, kan du spare 1,9 MB ved å utelate right mappen.

zic ... -p ...
   
Dette oppretter posixrules filen. Vi bruker New York fordi POSIX krever at sommertidsreglene er i samsvar med amerikanske regler.

En måte å bestemme den lokale tidssonen på er å kjøre følgende skript:

tzselect

Etter å ha svart på noen spørsmål om plasseringen, vil skriptet skrive ut navnet på tidssonen (f.eks. Amerika/Edmonton). Det er også noen andre mulige tidssoner oppført i /usr/share/zoneinfo som Canada/Eastern eller EST5EDT som ikke er identifisert av skriptet, men som kan brukes.

Opprett deretter filen /etc/localtime ved å kjøre:

ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime

Erstatt <xxx> med navnet på den valgte tidssonen (f.eks. Canada/Eastern).

6.9.2.3. Konfigurere Dynamisk laster

Som standard søker den dynamiske lasteren (/lib/ld-linux.so.2) gjennom /lib og /usr/lib etter dynamiske biblioteker som er nødvendige av programmer mens de kjøres. Imidlertid, hvis det er biblioteker i andre kataloger enn /lib og /usr/lib, må disse legges til filen /etc/ld.so.conf for at den dynamiske lasteren skal finne dem. To kataloger som vanligvis er kjent for å inneholde flere biblioteker, er /usr/local/lib og /opt/lib, så legg disse katalogene til den dynamiske lasterens søkebane.

Opprett en ny fil /etc/ld.so.conf ved å kjøre følgende:

cat > /etc/ld.so.conf << "EOF"

# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib

 

EOF

Om ønsket kan den dynamiske lasteren også søke i en mappe og inkludere innholdet i filene som finnes der. Vanligvis er filene i denne katalogen en linje som spesifiserer ønsket biblioteksti. For å legge til denne muligheten, kjør følgende kommandoer:

cat >> /etc/ld.so.conf << "EOF"

# Add an include directory
include /etc/ld.so.conf.d/*.conf

 

EOF
mkdir -pv /etc/ld.so.conf.d

6.9.3. Innholdet i Glibc

Installerte programmer: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, makedb, mtrace, nscd, pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace, zdump, og zic

Installerte biblioteker: ld-2.31.so, libBrokenLocale.{a,so}, libSegFault.so, libanl.{a,so}, libc.{a,so}, libc_nonshared.a, libcrypt.{a,so}, libdl.{a,so}, libg.a, libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so}, libnsl.{a,so}, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libpcprofile.so, libpthread.{a,so}, libpthread_nonshared.a, libresolv.{a,so}, librt.{a,so}, libthread_db.so, og libutil.{a,so}

Installerte mapper: /usr/include/arpa, /usr/include/bits, /usr/include/gnu, /usr/include/net, /usr/include/netash, /usr/include/netatalk, /usr/include/netax25, /usr/include/neteconet, /usr/include/netinet, /usr/include/netipx, /usr/include/netiucv, /usr/include/netpacket, /usr/include/netrom, /usr/include/netrose, /usr/include/nfs, /usr/include/protocols, /usr/include/rpc, /usr/include/sys, /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, /usr/share/i18n, /usr/share/zoneinfo, /var/cache/nscd, og /var/lib/nss_db

 

Korte beskrivelser

catchsegv -Kan brukes til å lage en stakkspor når et program avsluttes med en segmenteringsfeil

gencat Genererer meldingskataloger

getconf Viser systemkonfigurasjonsverdiene for filsystemspesifikke variabler

getent Henter oppføringer fra en administrativ database

iconv Utfører tegnsettkonvertering

iconvconfig Oppretter hurtiglastende iconv modulkonfigurasjonsfiler

ldconfig Konfigurerer runtime bindinger for dynamiske lenker

ldd Rapporter hvilke delte biblioteker kreves av hvert gitt program eller delt bibliotek

lddlibc4 Hjelper ldd med objektfiler

locale Skriver ut forskjellige opplysninger om gjeldende tidssone

localedef Kompilerer landspesifikasjoner

makedb - Oppretter en enkel database fra tekstinndata

mtrace - Leser og tolker en minnesporingsfil og viser et sammendrag i menneskelig lesbart format

nscd - En nisse (daemon) som gir en hurtigbuffer for de vanligste forespørslene om navnetjenester

pcprofiledump - Dumper informasjon generert av PC profilering

pldd - Viser dynamiske delte objekter som brukes av prosesser

sln - Et statisk koblet ln program

sotruss - Sporer delte biblioteksprosedyrer for en spesifisert kommando

sprof - Leser og viser delte objektprofileringsdata

tzselect - Spør brukeren om plasseringen av systemet og rapporterer den tilhørende tidssonebeskrivelsen

xtrace - Sporer utførelsen av et program ved å skrive ut den for øyeblikket utførte funksjonen

zdump - Tidssone dumperen

zic - Tidssone kompilatoren

ld-2.31.so - Hjelpeprogrammet for delte bibliotekkjørbare filer

libBrokenLocale - Brukes internt av Glibc som et grovt hack for å få ødelagte programmer (f.eks. Noen Motif-applikasjoner) som kjører. Se kommentarer i glibc-2.31 /locale/broken_cur_max.c for mer informasjon

libSegFault - Segmenteringsfeilsignalbehandleren, brukt av catchsegv

libanl - Et bibliotek med asynkron navnoppslag

libc - Hovedbiblioteket for C

libcrypt - Kryptografibiblioteket

libdl - Det dynamiske koblingsgrensesnittbiblioteket

libg - Dummy bibliotek som ikke inneholder noen funksjoner. Tidligere var et runtime bibliotek for g++

libm - Det matematiske biblioteket

libmcheck - Slår på kontroll av minnetildeling når det er koblet til

libmemusage - Brukes av memusage for å samle informasjon om minnebruken til et program

libnsl - Nettverkstjenestebiblioteket

libnss - Navnetjenestebytte bibliotekene, som inneholder funksjoner for å løse vertsnavn, brukernavn, gruppenavn, aliaser, tjenester, protokoller, etc.

libpcprofile - Kan forhåndsinnlastes til en PC profil, en kjørbar

libpthread - POSIX trådbiblioteket

libresolv - Inneholder funksjoner for å opprette, sende og tolke pakker til Internetts domenenavnservere

librt - Inneholder funksjoner som gir de fleste av grensesnittene som er spesifisert av POSIX.1b Realtime Extension

libthread_db - Inneholder funksjoner som er nyttige for å bygge feilsøkere for flertrådede programmer

libutil - Inneholder kode for “standard” -funksjoner som brukes i mange forskjellige Unix-verktøy

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.10. Justere verktøykjeden

Nå som de endelige C bibliotekene er installert, er det på tide å justere verktøykjeden slik at den kobler alle nylig kompilerte programmer mot disse nye bibliotekene.

Først sikkerhetskopierer du /tools linker, og erstatter den med den justerte linkeren vi lagde i kapittel 5. Vi oppretter også en kobling til motparten i /tools/$(uname -m) -pc-linux-gnu / bin:

mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld

Deretter endrer du GCC spesifikasjonsfilen slik at den peker til den nye dynamiske linkeren. Slett alle forekomster av “/tools” bør gi oss den rette veien til den dynamiske linkeren. Juster også spesifikasjonsfilen slik at GCC vet hvor du finner riktige deklarasjoner og Glibc startfiler. En sed kommando oppnår dette:

gcc -dumpspecs | sed -e 's@/tools@@g' \
       -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
       -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
       `dirname $(gcc --print-libgcc-file-name)`/specs

Det er en god ide å inspisere spesifikasjonsfilen visuelt for å bekrefte at den tiltenkte endringen faktisk ble gjort.

Det er viktig på dette tidspunktet å sikre at de grunnleggende funksjonene (sammenstilling og kobling) av den justerte verktøykjeden fungerer som forventet. For å gjøre dette, utfør følgende tilregnelighetskontroller:

echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'

Det skal ikke være noen feil, og utdataene fra den siste kommandoen vil være (gir mulighet for plattformspesifikke forskjeller i dynamisk linkernavn):

[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

Legg merke til at på 64-biters systemer er /lib plasseringen til vår dynamiske linker, men nås via en symbolsk kobling i /lib64.

På 32-biters systemer skal tolken være /lib/ld-linux.so.2.

Forsikre deg nå om at vi er klar til å bruke riktige startfiler:

grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log

Utdataen til den siste kommandoen skal være:

/usr/lib/../lib/crt1.o succeeded
/usr/lib/../lib/crti.o succeeded
/usr/lib/../lib/crtn.o succeeded

Kontroller at kompilatoren søker etter riktige deklarasjonsfiler:

grep -B1 '^ /usr/include' dummy.log

Denne kommandoen skal returnere følgende utdata:

#include <...> search starts here:
/usr/include

Deretter må du bekrefte at den nye linkeren brukes med de riktige søkeveiene:

grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'

Henvisninger til stier som har komponenter med 'linux-gnu', bør ignoreres, men ellers skal utgangen fra den siste kommandoen være:

SEARCH_DIR("/usr/lib")
SEARCH_DIR("/lib")

Neste sjekk at vi bruker riktig libc:

grep "/lib.*/libc.so.6 " dummy.log

Utdataen til den siste kommandoen skal være:

attempt to open /lib/libc.so.6 succeeded

Til slutt, sørg for at GCC bruker riktig dynamisk linker:

grep found dummy.log

Utgangen fra den siste kommandoen skal være (gir mulighet for plattformspesifikke forskjeller i dynamisk linkernavn):

found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2

Hvis utdataen ikke vises som vist ovenfor eller ikke mottas i det hele tatt, er noe alvorlig galt. Undersøk og følg trinnene for å finne ut hvor problemet er og rette det. Den mest sannsynlige årsaken er at noe gikk galt med specs filjustering. Eventuelle problemer må løses før du fortsetter med prosessen.

Når alt fungerer riktig, kan du rense opp testfilene:

rm -v dummy.c a.out dummy.log
Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.11. Zlib-1.2.11

Zlib pakken inneholder komprimerings- og dekompresjonsrutiner som brukes av noen programmer.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 5.1 MB

6.11.1. Installasjon av Zlib

Forbered Zlib for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

Det delte biblioteket må flyttes til /lib, og som et resultat må .so-filen i /usr/lib gjenopprettes:

mv -v /usr/lib/libz.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so

6.11.2. Innholdet i Zlib

Installert bibliotek: libz.{a,so}

 

Kort beskrivelse

libz - Inneholder komprimerings- og dekompresjonsfunksjoner som brukes av noen programmer

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.12. Bzip2-1.0.8

Bzip2 pakken inneholder programmer for komprimering og dekomprimering av filer. Komprimering av tekstfiler med bzip2 gir en mye bedre komprimeringsprosent enn med den tradisjonelle gzip.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 7.7 MB

6.12.1. Installasjon av Bzip2

Bruk en oppdatering som vil installere dokumentasjonen for denne pakken:

patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch

Følgende kommando sikrer at installasjon av symbolske lenker er relative:

sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile

Forsikre deg om at man sidene er installert på riktig sted:

sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile

Forbered Bzip2 for kompilering:

make -f Makefile-libbz2_so
make clean

Betydningen av make parameteren:

-f Makefile-libbz2_so
   Dette vil føre til at Bzip2 bygges ved hjelp av en annen Make fil, i dette tilfellet Make-libbz2_so filen, som lager et dynamisk libbz2.so bibliotek og kobler Bzip2 verktøyene mot den.

Kompilere og test pakken:

make

For å teste resultatene:

make check

Installer programmene:

make PREFIX=/usr install

Installer den delte bzip2 binæren i /bin mappen, lag noen nødvendige symbolske lenker og rydd opp:

cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat

6.12.2. Innholdet i Bzip2

Installerte programmerbunzip2 (link to bzip2), bzcat (link to bzip2), bzcmp (link to bzdiff), bzdiff, bzegrep (link to bzgrep), bzfgrep (link to bzgrep), bzgrep, bzip2, bzip2recover, bzless (link to bzmore), and bzmore

Installerte biblioteker: libbz2.{a,so}

Installerte mapper/usr/share/doc/bzip2-1.0.8

 

Kort beskrivelse

bunzip2 - Dekompresser bzipped filer

bzcat - Dekompresser til standardutgang

bzcmp - Kjører cmp på bzippede filer

bzdiff - Kjører diff på bzippede filer

bzegrep - Kjører egrep på bzippede filer

bzfgrep - Kjører fgrep på bzippede filer

bzgrep - Kjører grep på bzippede filer

bzip2 - Komprimerer filer ved å bruke Burrows-Wheeler-blokkeringssortering av tekstkomprimeringsalgoritme med Huffman-koding; kompresjonshastigheten er bedre enn den som oppnås av mer konvensjonelle kompressorer som bruker “Lempel-Ziv” -algoritmer, som gzip

bzip2recover - Forsøker å gjenopprette data fra skadede bzippede filer

bzless - Kjører less på bzippede filer

bzmore - Kjører more på bzippede filer

libbz2 - Biblioteket implementerer tapsfri, blokkeringssortering av datakomprimering ved hjelp av Burrows-Wheeler-algoritmen

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.13. Xz-5.2.4

Xz pakken inneholder programmer for komprimering og dekomprimering av filer. Det gir muligheter for lzma og de nyere Xz komprimeringsformatene. Komprimering av tekstfiler med Xz gir en bedre komprimeringsprosent enn med de tradisjonelle gzip eller bzip2 kommandoene.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 16 MB

6.13.1. Installasjon av Xz

Forbered Xz for kompilering med:

./configure --prefix=/usr \
                    --disable-static \
                    --docdir=/usr/share/doc/xz-5.2.4

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken og sørg for at alle viktige filer er i riktig katalog:

make install
mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
mv -v /usr/lib/liblzma.so.* /lib
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so

6.13.2. Innholdet i Xz

Installerte programmerlzcat (lenker til xz), lzcmp (lenker til xzdiff), lzdiff (lenker til xzdiff), lzegrep (lenker til xzgrep), lzfgrep (lenker til xzgrep), lzgrep (lenker til xzgrep), lzless (lenker til xzless), lzma (lenker til xz), lzmadec, lzmainfo, lzmore (lenker til xzmore), unlzma (lenker til xz), unxz (lenker til xz), xz, xzcat (lenker til xz), xzcmp (lenker til xzdiff), xzdec, xzdiff, xzegrep (lenker til xzgrep), xzfgrep (lenker til xzgrep), xzgrep, xzless, og xzmore

Installert bibliotekliblzma.so

Installerte mapper/usr/include/lzma og /usr/share/doc/xz-5.2.4

 

Kort beskrivelse

lzcat - Dekompresser til standardutgang

lzcmp - Kjører cmp på LZMA komprimerte filer

lzdiff - Kjører diff på LZMA komprimerte filer

lzegrep - Kjører egrep på LZMA komprimerte filer

lzfgrep - Kjører fgrep på LZMA komprimerte filer

lzgrep - Kjører grep på LZMA komprimerte filer

lzless - Kjører less på LZMA komprimerte filer

lzma - Komprimerer eller dekomprimerer filer ved å bruke LZMA formatet

lzmadec - En liten og rask dekoder for LZMA komprimerte filer

lzmainfo - Viser informasjon som er lagret i LZMA komprimerte filhoder

lzmore - Kjører more på LZMA komprimerte filer

unlzma - Dekompresser filer ved å bruke LZMA formatet

unxz - Dekompresser filer ved å bruke XZ formatet

xz - Komprimerer eller dekomprimerer filer med XZ formatet

xzcat - Dekompresser til standardutgang

xzcmp - Kjører cmp på XZ komprimerte filer

xzdec - En liten og rask dekoder for XZ komprimerte filer

xzdiff - Kjører diff på XZ komprimerte filer

xzegrep - Kjører egrep på XZ komprimerte filer

xzfgrep - Kjører fgrep på XZ komprimerte filer

xzgrep - Kjører grep på XZ komprimerte filer

xzless - Kjører less på XZ komprimerte filer

xzmore - Kjører more på XZ komprimerte filer

liblzma - Biblioteket implementerer tapsfri, blokkeringssortering av datakomprimering ved hjelp av Lempel-Ziv-Markov-kjedealgoritmen

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.14. File-5.38

File pakken inneholder et verktøy for å bestemme typen til en gitt fil eller filer.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 20 MB

6.14.1. Installasjon av File

Forbered File for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer programmene:

make install

6.14.2. Innholdet i File

Installert program: file

Installert bibliotek: libmagic.so

 

Kort beskrivelse

file - Forsøker å klassifisere hver gitt fil; det gjør dette ved å utføre flere tester - filsystemtester, magiske tallprøver og språktester

libmagic - Inneholder rutiner for magisk nummergjenkjenning, brukt av file programmet

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.15. Readline-8.0

Readline pakken er et sett med biblioteker som tilbyr kommandolinjebehandling og historikkfunksjoner.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 15 MB

6.15.1. Installasjon av Readline

Å installere Readline på nytt vil føre til at de gamle bibliotekene flyttes til <biblioteket> .old. Selv om dette normalt ikke er et problem, kan det i noen tilfeller utløse en koblingsfeil i ldconfig. Dette kan unngås ved å utstede følgende to seder:

sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install

Forbered Readline for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --docdir=/usr/share/doc/readline-8.0

Kompilere pakken:

make SHLIB_LIBS="-L/tools/lib -lncursesw"

Betydningen av make parameteren:

SHLIB_LIBS="-L/tools/lib -lncursesw"
  Dette alternativet tvinger Readline til å koble mot libncursesw biblioteket.

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make SHLIB_LIBS="-L/tools/lib -lncursesw" install

Flytt nå de dynamiske bibliotekene til et mer passende sted og fikse opp noen tillatelser og symbolkoblinger:

mv -v /usr/lib/lib{readline,history}.so.* /lib
chmod -v u+w /lib/lib{readline,history}.so.*
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so

Installer dokumentasjonen om ønskelig:

install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.0

6.15.2. Innholdet i Readline

Installerte biblioteker: libhistory.so og libreadline.so

Installerte mapper: /usr/include/readline og /usr/share/doc/readline-8.0

 

Kort beskrivelse

libhistory - Tilbyr et konsistent brukergrensesnitt for å huske historielinjer

libreadline - Gir et sett med kommandoer for å manipulere tekst som er lagt inn i en interaktiv økt i et program.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.16. M4-1.4.18

M4 pakken inneholder en makroprosessor.

 

Omtrentlig byggetid: mindre enn 0.4 SBU

Nødvendig diskplass: 33 MB

6.16.1. Installasjon av M4

Først må du lage noen rettelser som kreves av glibc-2.28:

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h

Forbered M4 for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene skriv:

make check

Installer pakken:

make install

6.16.2. Innholdet i M4

Installert program: m4

 

Kort beskrivelse

m4 - Kopierer de gitte filene mens innholdet i makroene utvides [Disse makroene er enten innebygde eller brukerdefinerte og kan ta et hvilket som helst antall argumenter. I tillegg til å utføre makroutvidelse, har m4 innebygde funksjoner for å inkludere navngitte filer, kjøre Unix-kommandoer, utføre heltall aritmetikk, manipulere tekst, rekursjon, etc. m4 programmet kan brukes enten som en front-end til en kompilator eller som en makro prosessor i seg selv.]

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.17. Bc-2.5.3

Bc pakken inneholder et vilkårlig presisjons numerisk prosesseringsspråk.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 2.9 MB

6.17.1. Installasjon av Bc

Forbered Bc for kompilering:

PREFIX=/usr CC=gcc CFLAGS="-std=c99" ./configure.sh -G -O3

Betydningen av konfigurasjonsalternativene:

CC=gcc CFLAGS="-std=c99"
  Disse parametrene spesifiserer kompilatoren og C-standarden som skal brukes.

-O3
  Spesifiser optimaliseringen du vil bruke.

-G
     Utelat deler av testsuiten som ikke vil fungere uten at GNU bc er til stede.

Kompilere pakken:

make

For å teste bc, kjør:

make test

Installer programmene:

make install

6.17.2. Innholdet i Bc

Installerte programmer: bc og dc

 

Kort beskrivelse

bc - En kommandolinjekalkulator

dc - En omvendt polert kommandolinjekalkulator

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.18. Binutils-2.34

Binutils pakken inneholder en lenker, en samler og andre verktøy for å håndtere objektfiler.

 

Omtrentlig byggetid: 6.7 SBU

Nødvendig diskplass: 5.1 GB

6.18.1. Installasjon av Binutils

Kontroller at PTY-ene fungerer som de skal i chroot miljøet ved å utføre en enkel test:

expect -c "spawn ls"

Denne kommandoen skal gi følgende utdata:

spawn ls

Hvis utdataen i stedet inkluderer meldingen nedenfor, er ikke miljøet satt opp for riktig PTY-drift. Dette problemet må løses før du kjører testsuiter for Binutils og GCC:

The system has no more ptys.
Ask your system administrator to create more.

Fjern nå en test som forhindrer at testene fullføres:

sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in

Binutils dokumentasjonen anbefaler å bygge Binutils i en dedikert byggemappe:

mkdir -v build
cd build

Forbered binutils for kompilering:

../configure --prefix=/usr \
                     --enable-gold \
                     --enable-ld=default \
                     --enable-plugins \
                     --enable-shared \
                     --disable-werror \
                     --enable-64-bit-bfd \
                     --with-system-zlib

Betydningen av konfigurasjonsparametere:

--enable-gold
  Bygg gold linkeren og installer den som ld.gold (ved siden av standardkoblingen).

--enable-ld=default
  Bygg den originale bfd linkeren og installer den som både ld (standardlinker) og ld.bfd.

--enable-plugins
  Aktiverer plugin støtte for linkeren.

--enable-64-bit-bfd
  Aktiverer 64-biters støtte (på verter med smalere ordstørrelser). Kanskje ikke nødvendig på 64-biters systemer, men skader ikke.

--with-system-zlib
  Bruk det installerte zlib biblioteket i stedet for å bygge den inkluderte versjonen.

Kompilere pakken:

make tooldir=/usr

Betydningen av make parameteren:

tooldir=/usr
  
Normalt sett er tooldir (katalogen der kjørbarhetene til slutt vil være lokalisert) satt til $(exec_prefix)/$(target_alias). For eksempel vil x86_64-maskiner utvide den til /usr/x86_64-unknown-linux-gnu. Fordi dette er et tilpasset system, er ikke denne målspesifikke katalogen i /usr nødvendig. $(exec_prefix)/$(target_alias) ville bli brukt hvis systemet ble brukt til å krysskompilere (for eksempel å sette sammen en pakke på en Intel maskin som genererer kode som kan kjøres på PowerPC maskiner).

Testserien for Binutils i denne delen anses som kritisk. Ikke hopp over den under noen omstendigheter.

Test resultatene:

make -k check

Ver_test_pr16504.sh testen er kjent for å mislykkes.

Installer pakken:

make tooldir=/usr install

6.18.2. Innholdet i Binutils

Installerte programmer: addr2line, ar, as, c++filt, dwp, elfedit, gprof, ld, ld.bfd, ld.gold, nm, objcopy, objdump, ranlib, readelf, size, strings, og strip

Installerte biblioteker: libbfd.{a,so} og libopcodes.{a,so}

Installert mappe: /usr/lib/ldscripts

 

Korte beskrivelser

addr2line Oversetter programadresser til filnavn og linjenumre; gitt en adresse og navnet på en kjørbar fil, bruker den feilsøkingsinformasjonen i den kjørbare filen for å bestemme hvilken kildefil og linjenummer som er tilknyttet adressen

ar Oppretter, modifiserer og trekker ut fra arkiver

as En assembler som assembler utdataene fra gcc til objektfiler

c++filt - Brukes av linkeren til å avkoble C++ og Javasymboler og for å forhindre overbelastede funksjoner i å kollidere

dwp - DWARF pakkeverktøyet

elfedit - Oppdaterer ELF deklarasjoner til ELF filer

gprof Viser anropsdiagramprofildata

ld En lenker som kombinerer et antall objekt- og arkivfiler i en enkelt fil, flytter dataene og binder opp symbolreferanser

ld.gold - En nedskåret versjon av ld som bare støtter elf objektfilformatet

ld.bfd - Hard lenke til ld

nm Viser symbolene som forekommer i en gitt objektfil

objcopy - Oversetter en type objektfil til en annen

objdump - Viser informasjon om den gitte objektfilen, med alternativer som kontrollerer den spesifikke informasjonen som skal vises; informasjonen som vises, er nyttig for programmerere som jobber med kompilasjonsverktøyene

ranlib - Genererer en indeks over innholdet i et arkiv og lagrer det i arkivet; indeksen lister opp alle symbolene definert av arkivmedlemmer som er flyttbare objektfiler

readelf - Viser informasjon om binære filer av ELF typen

size - Viser seksjonsstørrelser og totalstørrelse for de gitte objektfilene

strings - For hver gitt fil sendes ut sekvensene av utskrivbare tegn som har minst den angitte lengden (som standard er fire); for objektfiler skrives det som standard bare ut strengene fra initialisering og lasting av seksjoner, mens det for andre filtyper skanner hele filen

strip - Kasserer symboler fra objektfiler

libbfd - Biblioteket for binære filer

libctf - Støttebiblioteket for feilsøking i Compat ANSI-C Type Format

libctf-nobfd - En libctf variant som ikke bruker libbfd funksjonalitet

libopcodes - Et bibliotek for å håndtere opcodes - "den lesbare teksten" av instruksjoner for prosessoren; den brukes til å bygge verktøy som objdump

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.19. GMP-6.2.0

GMP pakken inneholder matematikkbiblioteker. Disse har nyttige funksjoner for vilkårlig presisjons aritmetikk.

 

Omtrentlig byggetid: mindre enn 1.1 SBU

Nødvendig diskplass: 51 MB

6.19.1. Installasjon av GMP

Hvis du bygger for 32-biters x86, men du har en CPU som er i stand til å kjøre 64-biters kode og du har spesifisert CFLAGS i miljøet, vil konfigurasjonsskriptet prøve å konfigurere for 64-bits og mislykkes. Unngå dette ved å påkalle konfigurasjonskommandoen nedenfor med


ABI=32 ./configure ...

Standardinnstillingene til GMP produserer biblioteker som er optimalisert for vertsprosessoren. Hvis det ønskes biblioteker som er egnet for prosessorer som er mindre dyktige enn vertsens CPU, kan generiske biblioteker opprettes ved å kjøre følgende:


cp -v configfsf.guess config.guess
cp -v configfsf.sub config.sub

Forbered GMP for kompilering:

./configure --prefix=/usr \
                    --enable-cxx \
                    --disable-static \
                    --docdir=/usr/share/doc/gmp-6.2.0

Betydningen av de nye konfigurasjonsalternativene:

--enable-cxx
   Denne parameteren muliggjør støtte for C++

--docdir=/usr/share/doc/gmp-6.2.0
  Denne variabelen spesifiserer riktig sted for dokumentasjonen.

Kompilere pakken og generere HTML-dokumentasjonen:

make

make html

Testserien for GMP i denne delen anses som kritisk. Ikke hopp over den under noen omstendigheter.

For å teste resultatene:

make check 2>&1 | tee gmp-check-log

Koden i gmp er svært optimalisert for prosessoren der den er bygd. Noen ganger feilkoder koden som oppdager prosessoren systemfunksjonalitetene, og det vil være feil i testene eller andre applikasjoner som bruker gmp-bibliotekene med meldingen "Illegal instruction". I dette tilfellet bør gmp konfigureres på nytt med alternativet  --build=x86_64-unknown-linux-gnu og gjenoppbygges.

Forsikre deg om at alle 190 tester i testpakken besto. Sjekk resultatene ved å utgi følgende kommando:

awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log

Installer pakken og dokumentasjonen:

make install

make install-html

6.19.2. Innholdet i GMP

Installerte biblioteker: libgmp.so og libgmpxx.so

Installert mappe: /usr/share/doc/gmp-6.2.0

 

Kort beskrivelse

libgmp - Inneholder presisjonsmatematikkfunksjoner

libgmpxx - Inneholder C++ presisjonsmatematikkfunksjoner

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.20. MPFR-4.0.2

MPFR pakken inneholder funksjoner for multiple presisjonsmatematikk.

 

Omtrentlig byggetid: mindre enn 0.8 SBU

Nødvendig diskplass: 37 MB

6.20.1. Installasjon av MPFR

Forbered MPFR for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --enable-thread-safe \
                    --docdir=/usr/share/doc/mpfr-4.0.2

Kompilere pakken og generere HTML dokumentasjonen:

make

make html

Testserien for MPFR i denne delen anses som kritisk. Ikke hopp over den under noen omstendigheter.

Test resultatene og sørg for at alle testene er bestått:

make check

Installer pakken og dens dokumentasjon:

make install

make install-html

6.20.2. Innholdet i MPFR

Installert bibliotek: libmpfr.so

Installert mappe: /usr/share/doc/mpfr-4.0.2

 

Kort beskrivelse

libmpfr - Inneholder mattefunksjoner med flere presisjoner

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.21. MPC-1.1.0

MPC pakken inneholder et bibliotek for aritmetikk av komplekse tall med vilkårlig høy presisjon og riktig avrunding av resultatet.

 

Omtrentlig byggetid: mindre enn 0.3 SBU

Nødvendig diskplass: 22 MB

6.21.1. Installasjon av MPC

Forbered MPC for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --docdir=/usr/share/doc/mpc-1.1.0

Kompilere pakken og generere HTML dokumentasjonen:

make

make html

For å teste resultatene:

make check

Installer pakken og dens dokumentasjon:

make install
make install-html

6.21.2. Innholdet i MPC

Installert program: file

Installert bibliotek: libmpc.so

Installert mappe: /usr/share/doc/mpc-1.1.0

 

Kort beskrivelse

libmpc - Inneholder komplekse mattefunksjoner

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.22. Attr-2.4.48

Attr pakken inneholder verktøy for å administrere de utvidede attributtene på filsystemobjekter.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 4.2 MB

6.22.1. Installasjon av Attr

Forbered Attr for kompilering:

./configure --prefix=/usr \
                    --bindir=/bin \
                    --disable-static \
                    --sysconfdir=/etc \
                    --docdir=/usr/share/doc/attr-2.4.48

Kompilere pakken:

make

Testene må kjøres på et filsystem som støtter utvidede attributter som ext2, ext3 eller ext4 filsystemer. For å teste resultatene:

make check

Installer pakken:

make install

Det delte biblioteket må flyttes til /lib, og som et resultat må .so-filen i /usr/lib gjenopprettes:

mv -v /usr/lib/libattr.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so

6.22.2. Innholdet i Attr

Installerte programmer: attr, getfattr og setfattr

Installert bibliotek: libattr.so

Installerte mapper: /usr/include/attr og /usr/share/doc/attr-2.4.48

 

Kort beskrivelse

attr - Utvider attributter på filsystemobjekter

getfattr - Henter utvidede attributter til filsystemobjekter

setfattr - Angir utvidede attributter for filsystemobjekter

libattr - Inneholder bibliotekfunksjonene for å manipulere utvidede attributter

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.23. Acl-2.2.53

Acl pakken inneholder verktøy for å administrere tilgangskontrollister, som brukes til å definere mer finkornet skjønnsmessig tilgangsrettighet for filer og kataloger.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 4.2 MB

6.23.1. Installasjon av Acl

Forbered Acl for kompilering:

./configure --prefix=/usr \
                    --bindir=/bin \
                    --disable-static \
                    --libexecdir=/usr/lib \
                    --docdir=/usr/share/doc/acl-2.2.53

Kompilere pakken:

make

Acl testene må kjøres på et filsystem som støtter tilgangskontroll etter at Coreutils er bygget med Acl bibliotekene. Hvis ønskelig, gå tilbake til denne pakken og kjør make check etter at Coreutils er bygget senere i dette kapittelet.

make install

Installer pakken:

make install

Det delte biblioteket må flyttes til /lib, og som et resultat må .so-filen i /usr/lib gjenopprettes:

mv -v /usr/lib/libacl.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so

6.23.2. Innholdet i Acl

Installerte programmer: chacl, getfacl, og setfacl

Installert bibliotek: libacl.so

Installerte mapper: /usr/include/acl og /usr/share/doc/acl-2.2.53

 

Kort beskrivelse

chacl - Endrer tilgangskontrollisten til en fil eller katalog

getfacl - Henter filtilgangskontrollister

setfacl - Angir lister for filtilgangskontroll

libacl - Inneholder bibliotekfunksjonene for å manipulere tilgangskontrollister

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.24. Shadow-4.8.1

Shadow pakken inneholder programmer for å håndtere passord på en sikker måte.

 

Omtrentlig byggetid: mindre enn 0.2 SBU

Nødvendig diskplass: 46 MB

6.24.1. Installasjon av Shadow

Hvis du vil håndheve bruken av sterke passord, kan du se http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/cracklib.html for å installere CrackLib før du bygger Shadow. Legg deretter til --with-libcrack i konfigurasjonskommandoen nedenfor.

Deaktiver installasjonen av gruppeprogrammet og dets man sider, da Coreutils gir en bedre versjon. Hindre også installasjon av manuelle sider som allerede var installert i kapittel 6.8, “Man-sider-5.05”:

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;

I stedet for å bruke standard kryptometode, bruk den sikrere SHA-512 metoden for passordskryptering, som også tillater passord som er lengre enn 8 tegn. Det er også nødvendig å endre den foreldede /var/spool/mail for brukerpostkasser som Shadow bruker som standard til /var/mail som brukes for øyeblikket:

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
          -e 's@/var/spool/mail@/var/mail@' etc/login.defs

Hvis du valgte å bygge Shadow med Cracklib-støtte, kjører du følgende:

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs

Gjør en mindre endring for å gjøre det første gruppenummeret generert av useradd til 1000:

sed -i 's/1000/999/' etc/useradd

Forbered Shadow for kompilering:

./configure --sysconfdir=/etc --with-group-name-max-length=32

Betydningen av konfigurasjonsalternativet:

--with-group-name-max-length=32
   Det maksimale brukernavnet er 32 tegn. Dette gjør det maksimale gruppenavnet til det samme.

Kompilere pakken:

make

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make install

6.24.2. Konfigurere Shadow

Denne pakken inneholder verktøy for å legge til, endre og slette brukere og grupper; angi og endre passordene deres; og utføre andre administrative oppgaver. For en fullstendig forklaring av hva passordskygging betyr, se doc/HOWTO filen i det utpakkete kildetreet. Hvis du bruker Shadow støtte, må du huske at programmer som må bekrefte passord (skjermadministratorer, FTP-programmer, pop3-demoner, etc.) må være shadow kompatible. Det vil si at de må kunne jobbe med shadowed passord.

Kjør følgende kommando for å aktivere shadowed passord:

pwconv

For å aktivere shadowed gruppepassord, kjør:

grpconv

Shadows standardkonfigurasjon for useradd verktøyet har noen få advarsler som trenger litt forklaring. Først er standardhandlingen for useradd verktøyet å opprette brukeren og en gruppe med samme navn som brukeren. Som standard begynner brukerID nummeret (UID) og gruppeID nummeret (GID) med 1000. Dette betyr at hvis du ikke sender parametere til useradd, vil hver bruker være medlem av en unik gruppe på systemet. Hvis denne oppførselen er uønsket, må du overføre parameteren -g til useradd. Standardparametrene er lagret i filen /etc/default/useradd. Det kan hende du må endre to parametere i denne filen for å tilpasse til dine spesifikke behov.

/etc/default/useradd Parameter Forklaringer

GROUP=1000
   Denne parameteren setter begynnelsen på gruppenumre som er brukt i /etc/group filen. Du kan endre den til alt du ønsker. Merk at brukeren aldri vil bruke en UID eller GID på nytt. Hvis nummeret identifisert i denne parameteren brukes, vil det bruke neste tilgjengelige nummer etter dette. Merk også at hvis du ikke har en gruppe 1000 på systemet første gang du bruker useradd uten parameteren -g, vil du få en melding vist på terminalen som sier: useradd: unknown GID 1000. Du kan se bort fra dette melding og gruppe nummer 1000 vil bli brukt.

CREATE_MAIL_SPOOL=yes
   Denne parameteren får useradd til å opprette en postboksfil for den nyopprettede brukeren. useradd vil gjøre gruppeeierskap til denne filen til postgruppen med 0660 tillatelser. Hvis du foretrekker at disse postkassefilene ikke blir opprettet av useradd, kan du utgi følgende kommando:

sed -i 's/yes/no/' /etc/default/useradd

6.24.3. Angi root passordet

Velg et passord for brukeren root og sett det ved å kjøre:

passwd root

6.24.4. Innholdet i Shadow

Installerte programmer: chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (lenke til newgrp), su, useradd, userdel, usermod, vigr (lenke til vipw), og vipw

Installert mappe: /etc/default

 

Kort beskrivelse

chage - Brukes til å endre maksimalt antall dager mellom obligatoriske passordendringer

chfn - Brukes til å endre brukerens fulle navn og annen informasjon

chgpasswd - Brukes til å oppdatere passord i batchmodus

chpasswd - Brukes til å oppdatere brukerpassord i batchmodus

chsh - Brukes til å endre en brukers standard påloggingsskall

expiry - Kontrollerer og håndhever gjeldende policy for utløp av passord

faillog - Brukes til å undersøke loggen over påloggingsfeil, til å angi et maksimalt antall feil før en konto blir sperret, eller for å tilbakestille antallet feil

gpasswd - Brukes til å legge til og slette medlemmer og administratorer i grupper

groupadd - Oppretter en gruppe med det gitte navnet

groupdel - Sletter gruppen med det gitte navnet

groupmems - Lar en bruker administrere sin egen gruppemedlemskapsliste uten krav om superbrukerrettigheter.

groupmod - Brukes til å endre den gitte gruppens navn eller GID

grpck - Bekrefter integriteten til gruppefilene /etc/group og /etc/gshadow

grpconv - Oppretter eller oppdaterer shadow gruppefilen fra den normale gruppefilen

grpunconv - Oppdateringer /etc/group fra /etc/gshadow og sletter deretter sistnevnte

lastlog - Rapporterer den nyeste påloggingen til alle brukere eller en gitt bruker

login - Brukes av systemet for å la brukere logge seg på

logoutd - Er en nisse som brukes til å håndheve begrensninger på påloggingstid og porter

newgidmap - Brukes til å angi gid kartlegging av et brukernavnsområde

newgrp - Brukes til å endre gjeldende GID under en påloggingsøkt

newuidmap - Brukes til å angi uid kartlegging av et brukernavnsområde

newusers - Brukes til å opprette eller oppdatere en hel serie med brukerkontoer

nologin - Viser en melding om at en konto ikke er tilgjengelig; den er designet for å brukes som standardskall for kontoer som er deaktivert

passwd - Brukes til å endre passord for en bruker- eller gruppekonto

pwck - Bekrefter integriteten til passordfilene /etc/passwd og /etc/shadow

pwconv - Oppretter eller oppdaterer shadow passordfilen fra den vanlige passordfilen

pwunconv - Oppdateringer /etc/passwd fra /etc/shadow og sletter deretter sistnevnte

sg - Utfører en gitt kommando mens brukerens GID er satt til den for den gitte gruppen

su - Kjører et skall med erstatningsbruker- og gruppe-IDer

useradd - Oppretter en ny bruker med det gitte navnet, eller oppdaterer standardinformasjonen for ny bruker

userdel - Sletter den gitte brukerkontoen

usermod - Brukes til å endre den gitte brukerens påloggingsnavn, brukeridentifikasjon (UID), skall, startgruppe, hjemmekatalog, etc.

vigr - Redigerer /etc/group eller /etc/gshadow filene

vipw - Redigerer /etc/passwd eller /etc/shadow filene

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.25. GCC-9.2.0

GCC pakken inneholder GNU kompilatorsamlingen, som inkluderer C og C++ kompilatorene.

 

Omtrentlig byggetid: 88 SBU (med tester)

Nødvendig diskplass: 4.2 GB

6.25.1. Installasjon av GCC

Hvis du bygger på x86_64, endrer du standard katalognavn for 64 bit biblioteker til "lib":

case $(uname -m) in
   x86_64)
       sed -e '/m64=/s/lib64/lib/' \
              -i.orig gcc/config/i386/t-linux64
   ;;
esac

Som i gcc pass2, løser du et problem introdusert av Glibc-2.31:

sed -e '1161 s|^|//|' \
       -i libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc

GCC dokumentasjonen anbefaler å bygge GCC i en dedikert byggemappe:

mkdir -v build
cd build

Forbered GCC for kompilering:

SED=sed \
../configure --prefix=/usr \
                     --enable-languages=c,c++ \
                     --disable-multilib \
                     --disable-bootstrap \
                     --with-system-zlib

Merk at for andre språk er det noen forutsetninger som ennå ikke er tilgjengelige. Se BLFS boken for instruksjoner om hvordan du bygger alle GCCs støttede språk.

Betydningen av de nye konfigurasjonsalternativene:

SED=sed
    Innstilling av denne miljøvariabelen forhindrer en hardkodet bane til /tools/bin/sed.

--with-system-zlib
   Denne bryteren ber GCC om å koble til den installerte kopien av Zlib-biblioteket, i stedet for sin egen interne kopi.

Kompilere pakken:

make

Testserien for GCC i denne delen anses som kritisk. Ikke hopp over den under noen omstendigheter.

Et sett med tester i GCC testpakken er kjent for å anstrenge stabelen (stacken), så øk stabelstørrelsen før du kjører testene:

ulimit -s 32768

Test resultatene som en ikkeprivilegert bruker, men ikke stopp ved feil:

chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check"

Hvis du vil motta et sammendrag av resultatene av testserien, kjører du:

../contrib/test_summary

For bare sammendragene, kanaliser utdataen gjennom grep -A7 Summ.

Resultatene kan sammenlignes med de som finnes på http://www.linuxfromscratch.org/lfs/build-logs/9.1/ og https://gcc.gnu.org/ml/gcc-testresults/.

Seks tester relatert til get_time er kjent for å mislykkes. Disse er tilsynelatende relatert til en_HK regionaldataen.

To tester kalt lookup.cc og reverse.cc i experimental/net er kjent for å mislykkes i LFS chroot-miljø fordi de krever /etc/hosts og iana-etc.

To tester kalt pr57193.c og pr90178.c er kjent for å mislykkes.

Noen få uventede feil kan ikke alltid unngås. GCC utviklerne er vanligvis klar over disse problemene, men har ikke løst dem ennå. Med mindre testresultatene er veldig forskjellige fra URLene over, er det trygt å fortsette.

Installer pakken og fjern en unødvendig mapper:

make install
rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/9.2.0/include-fixed/bits/

GCC byggemappe eies nå av nobody, og eierforholdet til den installerte deklarasjonen (og dens innhold) vil være feil. Endre eierforhold til root bruker og gruppe:

chown -v -R root:root \
          /usr/lib/gcc/*linux-gnu/9.2.0/include{,-fixed}

ln -sv ../usr/bin/cpp /lib

Mange pakker bruker navnet cc for å kalle C kompilatoren. For å tilfredsstille disse pakkene, oppretter du en symlink:

ln -sv gcc /usr/bin/cc

Legg til en kompatibilitetssymlink for å aktivere byggeprogrammer med Link Time Optimization (LTO):

install -v -dm755 /usr/lib/bfd-plugins
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/9.2.0/liblto_plugin.so \
           /usr/lib/bfd-plugins/

Nå som den endelige verktøykjeden vår er på plass, er det viktig å igjen sikre at kompilering og kobling fungerer som forventet. Dette gjør vi ved å utføre de samme fornuftskontrollene som vi gjorde tidligere i kapitlet:

echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'

Det skal ikke være noen feil, og utdataene fra den siste kommandoen vil være (det kan være plattformspesifikke forskjeller i dynamisk linker navn):

[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

Forsikre deg nå om at vi er klar til å bruke de riktige startfilene:

grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log

Utdataen til den siste kommandoen skal være:

/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crt1.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crti.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crtn.o succeeded

Avhengig av maskinarkitekturen, kan ovennevnte avvike noe, forskjellen er vanligvis navnet på katalogen etter /usr/lib/gcc. Det viktige å se etter her er at gcc har funnet alle tre crt * .o-filer under /usr/lib mappen.

Kontroller at kompilatoren søker etter riktige deklarasjoner:

grep -B4 '^ /usr/include' dummy.log

Denne kommandoen skal returnere følgende utdata:

#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include
/usr/local/include
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed
/usr/include

Legg igjen merke til at katalogen som er oppkalt etter måltripletten din, kan være annerledes enn ovenfor, avhengig av arkitekturen.

Deretter må du bekrefte at den nye linkeren brukes med de riktige søkeveiene:

SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
SEARCH_DIR("/usr/local/lib64")
SEARCH_DIR("/lib64")
SEARCH_DIR("/usr/lib64")
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");

Et 32 biters system kan se noen få forskjellige kataloger. Her er for eksempel utgangen fra en i686-maskin:

SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
SEARCH_DIR("/usr/local/lib32")
SEARCH_DIR("/lib32")
SEARCH_DIR("/usr/lib32")
SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");

Neste sørg for at vi bruker riktig libc:

grep "/lib.*/libc.so.6 " dummy.log

Utdataen til den siste kommandoen skal være:

attempt to open /lib/libc.so.6 succeeded

Til slutt, sørg for at GCC bruker riktige dynamisk linker:

grep found dummy.log

Utdataen fra den siste kommandoen skal være (det kan være plattformspesifikke forskjeller i dynamisk linkernavn):

found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2

Hvis utgangen ikke vises som vist ovenfor eller ikke mottas i det hele tatt, er noe alvorlig galt. Undersøk og følg trinnene for å finne ut hvor problemet er og rette det. Den mest sannsynlige årsaken er at noe gikk galt med specs filjustering. Eventuelle problemer må løses før du fortsetter med prosessen.

make install
rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/9.2.0/include-fixed/bits/

Når alt fungerer riktig, slett testfilene:

rm -v dummy.c a.out dummy.log

Til slutt flytter du en feilplassert fil:

mkdir -pv /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib

6.25.2. Innholdet i GCC

Installerte programmer: c++, cc (lenke til gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, og gcov-tool

Installerte biblioteker: libasan.{a,so}, libatomic.{a,so}, libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, libgomp.{a,so}, libitm.{a,so}, liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, libstdc++fs.a, libsupc++.a, libtsan.{a,so}, og libubsan.{a,so}

Installerte mapper: /usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc, og /usr/share/gcc-9.2.0

 

Kort beskrivelse

c++ - C++ kompilatoren

cc - C kompilatoren

cpp - C forbehandler; den brukes av kompilatoren til å utvide #include, #define og lignende utsagn i kildefilene

g++ - C++ kompilatoren

gcc - C kompilatoren

gcc-ar - En wrapper rundt ar som legger et programtillegg til kommandolinjen. Dette programmet brukes bare til å legge til "optimalisering av koblingstid" og er ikke nyttig med standardbyggealternativene

gcc-nm - En wrapper rundt nm som legger et programtillegg til kommandolinjen. Dette programmet brukes bare til å legge til "optimalisering av koblingstid" og er ikke nyttig med standardbyggealternativene

gcc-ranlib - En wrapper rundt ranlib som legger et programtillegg til kommandolinjen. Dette programmet brukes bare til å legge til "optimalisering av koblingstid" og er ikke nyttig med standardbyggealternativene

gcov - Et verktøy for dekningstesting; den brukes til å analysere programmer for å bestemme hvor optimaliseringer vil ha mest effekt

gcov-dump - Frakoblet gcda og gcno profildumpverktøy

gcov-tool - Frakoblet gcda profilbehandlingsverktøy

libasan - Adresset rensing kjøretidsbibliotek

libatomic - GCC atomic innebygde kjøretidsbibliotek

libcc1 - C forbehandlingsbiblioteket

libgcc - Inneholder støtte for kjøretid for gcc

libgcov - Dette biblioteket er koblet til et program når GCC blir instruert om å muliggjøre profilering

libgomp - GNU implementering av OpenMP API for parallellprogrammering med delt plattform i flere plattformer i C/C++ og Fortran

liblsan - Kjøretidsbibliotek for lekkasjerensing

liblto_plugin - GCCs Link Time Optimization (LTO) programtillegg gjør det mulig for GCC å utføre optimaliseringer på tvers av samlingsenheter

libquadmath - GCC Quad Matte presisjonsbibliotek API

libssp - Inneholder rutiner som støtter GCCs stack-smashing beskyttelsesfunksjonalitet

libstdc++ - Standard C++ bibliotek

libstdc++fs - ISO/IEC TS 18822:2015 Filsystembibliotek

libsupc++ - Tilbyr støtterutiner for programmeringsspråket C++

libtsan - Kjøretidsbibliotek for trådrenser 

libubsan - Det udefinerte kjøretidsbiblioteket for adfersrenser 

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.26. Pkg-config-0.29.2

Pkg-config pakken inneholder et verktøy for å passere inkluderingsbanen og/eller bibliotekbanene for å bygge verktøy under konfigurasjonen og foreta filkjøring.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 30 MB

6.26.1. Installasjon av Pkg-config

Forbered Pkg-config for kompilering:

./configure --prefix=/usr \
                    --with-internal-glib \
                    --disable-host-tool \
                    --docdir=/usr/share/doc/pkg-config-0.29.2

Betydningen av de nye konfigurasjonsalternativene:

--with-internal-glib
   Dette vil tillate pkg-config å bruke sin interne versjon av Glib fordi en ekstern versjon ikke er tilgjengelig i LFS.

--disable-host-tool
   Dette alternativet deaktiverer opprettelsen av en uønsket hard lenke til pkg-config programmet.

Kompilere pakken:

make

For å teste resultatene:

make check

Installer programmene:

make install

6.26.2. Innholdet i Pkg-config

Installert program: pkg-config

Installert mappe: /usr/share/doc/pkg-config-0.29.2

 

Kort beskrivelse

pkg-config - Returnerer metainformasjon for det angitte biblioteket eller pakken

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.27. Ncurses-6.2

Ncurses pakken inneholder biblioteker for terminaluavhengig håndtering av karakterskjermer.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 43 MB

6.27.1. Installasjon av Ncurses

Ikke installer et statisk bibliotek som ikke håndteres av konfigurasjon:

sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in

Forbered Ncurses for kompilering:

./configure --prefix=/usr \
                    --mandir=/usr/share/man \
                    --with-shared \
                    --without-debug \
                    --without-normal \
                    --enable-pc-files \
                    --enable-widec

Betydningen av alternativene og nye konfigurasjonsparametere:

--enable-widec
   Denne bryteren fører til at brede tegnbiblioteker (f.eks. Libncursesw.so.6.2) bygges i stedet for normale biblioteker (f.eks. Libncurses.so.6.2). Disse bredkarakterbibliotekene er brukbare i både multibyte og tradisjonelle 8-biters lokaliteter, mens normale biblioteker bare fungerer som de skal i 8-biters lokaliteter. Biblioteker med bred karakter og normale er kildekompatible, men ikke binære-kompatible.

--enable-pc-files
   Denne bryteren genererer og installerer .pc filer for pkg-config.

--without-normal
   Denne bryteren deaktiverer bygging og installasjon av de fleste statiske biblioteker.

Kompilere pakken:

make

Denne pakken har en testsuite, men den kan bare kjøres etter at pakken er installert. Testene ligger i test/ mappen. Se README filen i denne katalogen for mer informasjon

Installer pakken:

make install

Flytt de delte bibliotekene til /lib mappen, der de forventes å oppholde seg:

mv -v /usr/lib/libncursesw.so.6* /lib

Fordi bibliotekene er flyttet, peker en symlink til en fil som ikke eksisterer. Gjenskape den:

ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so

Mange applikasjoner forventer fortsatt at linkeren kan finne ikke-brede karakter Ncurses biblioteker. Lur slike applikasjoner til å koble til biblioteker med bred karakter ved hjelp av symlinker og linkerskript:

for lib in ncurses form panel menu ; do
      rm -vf                                   /usr/lib/lib${lib}.so
      echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
      ln -sfv ${lib}w.pc                /usr/lib/pkgconfig/${lib}.pc
done

Til slutt, sørg for at gamle applikasjoner som ser etter -lcurses når de bygges fremdeles kan bygges:

rm -vf                                       /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so               /usr/lib/libcurses.so

Installer om nødvendig Ncurses dokumentasjonen:

mkdir -v           /usr/share/doc/ncurses-6.2
cp -v -R doc/* /usr/share/doc/ncurses-6.2

Instruksjonene ovenfor oppretter ikke Ncurses biblioteker som ikke har bred karakter, siden ingen pakker som er installert ved å kompilere fra kilder, vil koble seg mot dem under kjøretid. Imidlertid krever de eneste kjente binære applikasjonene som kobler mot Ncurses biblioteker som ikke er brede tegn, versjon 5. Hvis du må ha slike biblioteker på grunn av en applikasjon som bare er binær eller for å være kompatibel med LSB, bygger du pakken på nytt med følgende kommandoer:

make distclean
./configure --prefix=/usr \
                    --with-shared \
                    --without-normal \
                    --without-debug \
                    --without-cxx-binding \
                    --with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib

6.27.2. Innholdet i Ncurses

Installerte programmer: captoinfo (lenker til tic), clear, infocmp, infotocap (lenker til tic), ncursesw6-config, reset (lenker til tset), tabs, tic, toe, tput, og tset

Installerte biblioteker: libcursesw.so (symlink og lenkeskript til to libncursesw.so), libformw.so, libmenuw.so, libncursesw.so, libncurses++w.a, libpanelw.so, og deres motstykker som ikke har bred karakter uten "w" i biblioteknavnene.

Installerte mapper: /usr/share/tabset, /usr/share/terminfo, og /usr/share/doc/ncurses-6.2

 

Korte beskrivelser

captoinfo Konverterer en termcap beskrivelse til en terminfo beskrivelse

clear Renser skjermen, hvis mulig

infocmp Sammenligner eller skriver ut terminfo beskrivelser

infotocap Konverterer en terminfo beskrivelse til en termcap beskrivelse

ncursesw6-configGir konfigurasjonsinformasjon for ncurses

reset- Initialiserer en terminal til standardverdiene

tabs Rydder og setter tabulatorstopp på en terminal

tic Terminasjonsinngangsbeskrivelseskompilatoren som oversetter en terminfo fil fra kildeformat til det binære formatet som trengs for rutinene til ncurses bibliotekets. [En terminfo fil inneholder informasjon om funksjonene til en viss terminal.]

toe Viser alle tilgjengelige terminaltyper, med primærnavn og beskrivelse for hver

tput Gjør verdiene av terminalavhengige funksjoner tilgjengelige for skallet; den kan også brukes til å tilbakestille eller initialisere en terminal eller rapportere det lange navnet

tset Kan brukes til å initialisere terminaler

libcursesw - En lenke til libncursesw

libncursesw - Inneholder funksjoner for å vise tekst på mange komplekse måter på en terminalskjerm; et godt eksempel på bruken av disse funksjonene er menyen som vises under kjernens make menuconfig

libformw - Inneholder funksjoner for å implementere skjemaer

libmenuw - Inneholder funksjoner for å implementere menyer

libpanelw - Inneholder funksjoner for å implementere paneler

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.28. Libcap-2.31

Libcap pakken implementerer brukerplass grensesnittene til POSIX 1003.1e funksjonene som er tilgjengelige i Linuxkjerner. Disse egenskapene er en oppdeling av det kraftige root privilegiet i et sett med forskjellige privilegier.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 8.5 MB

6.28.1. Installasjon av Libcap

Hindre at to statiske biblioteker blir installert:

sed -i '/install.*STA...LIBNAME/d' libcap/Makefile

Kompilere pakken:

make lib=lib

Betydningen av make alternativene:

lib=lib
   Denne parameteren setter biblioteksmappen til /lib i stedet for /lib64 på x86_64. Det har ingen effekt på x86.

For å teste resultatene:

make test

Installer pakken:

make lib=lib install
chmod -v 755 /lib/libcap.so.2.31

6.28.2. Innholdet i Libcap

Installerte programmer: capsh, getcap, getpcaps, og setcap

Installerte biblioteker: libcap.so og libpsx.a

 

Kort beskrivelse

capsh - Et skallinnpakning for å utforske og begrense støttefunksjoner

getcap - Undersøker filmuligheter

getpcaps - Viser mulighetene på den/de spørrede prosessen(e)

setcap - Angir filmulighetene

libcap - Inneholder bibliotekfunksjonene for å manipulere POSIX 1003.1e mulighetene

libpsx - Inneholder funksjoner som støtter POSIX semantikk for syscalls assosiert med pthread biblioteket

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.29. Sed-4.8

Sed pakken inneholder en streameditor.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 34 MB

6.29.1. Installasjon av Sed

Først løser du et problem i LFS miljøet og fjerner en test som mislykkes:

sed -i 's/usr/tools/'                          build-aux/help2man
sed -i 's/testsuite.panic-tests.sh//' Makefile.in

Forbered Sed for kompilering:

./configure --prefix=/usr --bindir=/bin

Kompilere pakken og generer HTML dokumentasjonen:

make
make html

For å teste resultatene:

make check

Installer pakken og dens dokumentasjon:

make install
install -d -m755                    /usr/share/doc/sed-4.8
install -m644 doc/sed.html /usr/share/doc/sed-4.8

6.29.2. Innholdet i Sed

Installert program: sed

Installert mappe: /usr/share/doc/sed-4.8

 

Kort beskrivelse

sed - Filtrerer og transformerer tekstfiler i en enkelt pass

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.30. Psmisc-23.2

Psmisc pakken inneholder programmer for å vise informasjon om kjørende prosesser.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 34 MB

6.30.1. Installasjon av Psmisc

Forbered Psmisc for kompilering:

./configure --prefix=/usr

Kompilere pakken og generer HTML dokumentasjonen:

make
make html

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make install

Til slutt flytter du killall- og fuser-programmene til stedet spesifisert av FHS:

mv -v /usr/bin/fuser /bin
mv -v /usr/bin/killall /bin

6.30.2. Innholdet i Psmisc

Installerte programmer: fuser, killall, peekfd, prtstat, pslog, pstree, og pstree.x11 (lenker til pstree)

 

Kort beskrivelse

fuser - Rapporterer prosess ID-er (PID-er) for prosesser som bruker de gitte filene eller filsystemene

killall - Dreper prosesser ved navn; den sender et signal til alle prosesser som kjører noen av de gitte kommandoer

peekfd - Kikk på filbeskrivelser av en løpende prosess, gitt dens PID

prtstat - Skriver ut informasjon om en prosess

pslog - Rapporter gjeldende bane til logger for prosess

pstree - Viser løpende prosesser som et tre

pstree.x11 - Samme som pstree, bortsett fra at den venter på bekreftelse før den avslutter

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.31. Iana-Etc-2.30

Iana-Etc pakken inneholder data for nettverkstjenester og protokoller.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 2.3 MB

6.31.1. Installasjon av Iana-Etc

Følgende kommando konverterer rådata levert av IANA til riktige formater for /etc/protocols og /etc/services datafiler:

make

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make install

6.31.2. Innholdet i Iana-Etc

Installerte filer: /etc/protocols og /etc/services

 

Kort beskrivelse

/etc/protocols - Beskriver de forskjellige DARPA Internettprotokollene som er tilgjengelige fra TCP/IP undersystemet

/etc/services - Tilbyr en kartlegging mellom vennlige tekstnavn for internettjenester og deres underliggende tilordnede portnumre og protokolltyper

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.32. Bison-3.5.2

Bison pakken inneholder en parsergenerator.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 43 MB

6.32.1. Installasjon av Bison

Forbered Bison for kompilering:

./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.5.2

Kompilere pakken:

make

Det er en sirkulær avhengighet mellom bison og flex med hensyn til kontrollene. Om ønskelig kan bisonpakken gjenoppbygges etter at du har installert flex i neste seksjon og bisonkontrollene kan kjøres med make check.

Installer pakken:

make install

6.32.2. Innholdet i Bison

Installert program: bison and yacc

Installert bibliotek: liby.a

Installert mappe: /usr/share/bison

 

Kort beskrivelse

bison - Genererer, fra en serie regler, et program for å analysere strukturen til tekstfiler; Bison er en erstatning for Yacc (Yet Another Compiler Compiler)

yacc - En innpakning for bison, ment for programmer som fremdeles kaller yacc i stedet for bison; den kaller bison med alternativet -y

liby - Yacc-biblioteket som inneholder implementeringer av Yacc kompatible yyerror og hovedfunksjoner; dette biblioteket er vanligvis lite nyttig, men POSIX krever det

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.33. Flex-2.6.4

Flex pakken inneholder et verktøy for å generere programmer som gjenkjenner mønstre i tekst.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 36 MB

6.33.1. Installasjon av Flex

Først må du løse et problem som ble introdusert med glibc-2.26:

sed -i "/math.h/a #include <malloc.h>" src/flexdef.h

Byggprosedyren forutsetter at help2man programmet er tilgjengelig for å opprette en man side som kan kjøre - hjelp. Dette er ikke til stede, så vi bruker en miljøvariabel for å hoppe over denne prosessen. Nå, forbered Flex for samlingen:

HELP2MAN=/tools/bin/true \
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4

Kompilere pakken:

make

Hvis du vil teste resultatene (ca. 0.5 SBU), skriv:

make check

Installer pakken og dens dokumentasjon:

make install

Noen få programmer vet ikke om flex ennå, og prøver å kjøre forgjengeren, lex. For å støtte disse programmene, oppretter du en symbolsk lenke som heter lex som kjører flex i lex-emuleringsmodus:

ln -sv flex /usr/bin/lex

6.33.2. Innholdet i Flex

Installerte programmer: flex, flex++ (lenker til flex), og lex (lenker til flex)

Installert bibliotek: libfl.so

Installert mappe: /usr/share/doc/flex-2.6.4

 

Kort beskrivelse

flex - Et verktøy for å generere programmer som gjenkjenner mønstre i tekst; det gir mulighet for allsidigheten til å spesifisere reglene for mønsterfunn, utrydder behovet for å utvikle et spesialisert program

flex++ - En utvidelse av flex brukes til å generere C++ kode og klasser. Det er en symbolsk kobling til flex

lex - En symbolsk kobling som kjører flex i lex emuleringsmodus

libfl - Flex biblioteket

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.34. Grep-3.4

Grep pakken inneholder programmer for å søke gjennom filer.

 

Omtrentlig byggetid: 0.7 SBU

Nødvendig diskplass: 39 MB

6.34.1. Installasjon av Grep

Forbered Grep for kompilering:

./configure --prefix=/usr --bindir=/bin

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken og dens dokumentasjon:

make install

6.34.2. Innholdet i Grep

Installerte programmer: egrep, fgrep, og grep

 

Kort beskrivelse

egrep - Skriver ut linjer som samsvarer med et utvidet vanlig uttrykk

fgrep - Skriver ut linjer som samsvarer med en liste over faste strenger

grep - Skriver ut linjer som samsvarer med et grunnleggende vanlig uttrykk

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.35. Bash-5.0

Bash pakken inneholder Bourne-Again SHELL.

 

Omtrentlig byggetid: 1.9 SBU

Nødvendig diskplass: 62 MB

6.35.1. Installasjon av Bash

Innlemme noen oppstrømsrettinger:

patch -Np1 -i ../bash-5.0-upstream_fixes-1.patch

Forbered Bash for kompilering:

./configure --prefix=/usr \
                    --docdir=/usr/share/doc/bash-5.0 \
                    --without-bash-malloc \
                    --with-installed-readline

Betydningen av det nye konfigurasjonsalternativet:

--with-installed-readline
   Dette alternativet forteller Bash å bruke readline biblioteket som allerede er installert på systemet i stedet for å bruke sin egen readline versjon.

Kompilere pakken:

make

Hopp ned til “Installer pakken” hvis du ikke kjører testpakken.

For å forbered testene, må du sikre at brukeren nobody kan skrive til kildetreet:

chown -Rv nobody .

Nå, kjør testene som brukeren nobody:

su nobody -s /bin/bash -c "PATH=$PATH HOME=/home make tests"

Installer pakken og flytt den viktigste kjørbare filen til /bin:

make install
mv -vf /usr/bin/bash /bin

Kjør det nylig kompilerte bash programmet (erstatter det som for øyeblikket kjøres):

exec /bin/bash --login +h

Parametrene som brukes gjør bash prosessen til et interaktivt påloggingsskall og fortsetter å deaktivere hashing slik at nye programmer blir funnet når de blir tilgjengelige.

6.35.2. Innholdet i Bash

Installerte programmer: bash, bashbug, og sh (lenker til bash)

Installerte mapper: /usr/include/bash, /usr/lib/bash, og /usr/share/doc/bash-5.0

 

Kort beskrivelse

bash - En mye brukt kommandotolker; den utfører mange typer utvidelser og erstatninger på en gitt kommandolinje før den utføres, og gjør dermed denne tolken til et kraftig verktøy

bashbug - Et skallskript som hjelper brukeren å komponere og sende standardformaterte feilrapporter angående bash

sh - En symlink til bash programmet; når påkalt som sh, prøver bash å etterligne oppførselsatferden til historiske versjoner av sh så nært som mulig, samtidig som den overholder POSIX-standarden

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.36. Libtool-2.4.6

Libtool pakken inneholder støtteskriptet for generisk bibliotek for GNU. Det pakker kompleksiteten ved å bruke delte biblioteker i et konsistent, bærbart grensesnitt.

 

Omtrentlig byggetid: 1.8 SBU

Nødvendig diskplass: 43 MB

6.36.1. Installasjon av Libtool

Forbered Libtool for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Testtiden for libtool kan reduseres betydelig på et system med flere kjerner. For å gjøre dette, legg TESTSUITEFLAGS = -j<N> til linjen over. For eksempel kan bruk av -j4 redusere testtiden med over 60 prosent.

Det er kjent at fem tester mislykkes i LFS byggemiljøet på grunn av en sirkulær avhengighet, men alle tester består hvis de blir sjekket etter at automake er installert.

Installer pakken:

make install

6.36.2. Innholdet i Libtool

Installerte programmer: libtool og libtoolize

Installert bibliotek: libltdl.so

Installert mappe: /usr/include/libltdl og /usr/share/libtool

 

Kort beskrivelse

libtool - Tilbyr generaliserte bibliotekbyggingstjenester

libtoolize - Tilbyr en standard måte å legge til libtool støtte i en pakke

libltdl - Skjuler de forskjellige vanskene ved dlopening biblioteker

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.37. GDBM-1.18.1

GDBM pakken inneholder GNU Database Manager. Det er et bibliotek med databasefunksjoner som bruker utvidbar hashing og fungerer i likhet med standard UNIX dbm. Biblioteket inneholder primitiver for lagring av nøkkel/datapar, søking og henting av dataene ved hjelp av nøkkelen og sletting av en nøkkel sammen med dataene.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 11 MB

6.37.1. Installasjon av GDBM

Forbered GDBM for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --enable-libgdbm-compat

Betydningen av konfigurasjonalternativ:

--enable-libgdbm-compat
    Denne bryteren gjør det mulig å bygge libgdbm kompatibilitetsbiblioteket, ettersom noen pakker utenfor LFS kan kreve de eldre DBM rutinene den gir.

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

6.37.2. Innholdet i GDBM

Installert program: gdbm_dump, gdbm_load, og gdbmtool

Installert biblioteker: libgdbm.so og libgdbm_compat.so

 

Kort beskrivelse

gdbm_dump - Dumper en GDBM database til en fil

gdbm_load - Gjenoppretter en GDBM database fra en dump fil

gdbmtool - Tester og endrer en GDBM database

libgdbm - Inneholder funksjoner for å manipulere en hashet database

libgdbm_compat - Kompatibilitetsbibliotek som inneholder eldre DBM funksjoner

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.38. Gperf-3.1

Gperf genererer en perfekt hash funksjon fra en nøkkelsett.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 6.3 MB

6.38.1. Installasjon av Gperf

Forbered Gperf for kompilering:

./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1

Kompilere pakken:

make

Det er kjent at testene mislykkes hvis du kjører flere samtidige tester (-j alternativ større enn 1). For å teste resultatene:

make -j1 check

Installer pakken:

make install

6.38.2. Innholdet i Gperf

Installert program: gperf

Installert mappe: /usr/share/doc/gperf-3.1

 

Kort beskrivelse

gperf - Genererer en perfekt hash fra et nøkkelsett

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.39. Expat-2.2.9

Expat pakken inneholder et strømningsorientert C-bibliotek for analyse av XML.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 11 MB

6.39.1. Installasjon av Expat

Løs først et problem med regresjonstestene i LFS miljøet:

sed -i 's|usr/bin/env |bin/|' run.sh.in

Forbered Expat for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --docdir=/usr/share/doc/expat-2.2.9

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

Installer dokumentasjonen om ønskelig:

install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.2.9

6.39.2. Innholdet i Expat

Installert program: xmlwf

Installert bibliotek: libexpat.so

Installert mappe: /usr/share/doc/expat-2.2.9

 

Kort beskrivelse

xmlwf - Er et ikke-validerende verktøy for å sjekke om XML dokumenter er godt utformet eller ikke

libexpat - Inneholder API funksjoner for tolking av XML

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.40. Inetutils-1.9.4

Inetutils pakken inneholder programmer for grunnleggende nettverk.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 29 MB

6.40.1. Installasjon av Inetutils

Forbered Inetutils for kompilering:

./configure --prefix=/usr \
                    --localstatedir=/var \
                    --disable-logger \
                    --disable-whois \
                    --disable-rcp \
                    --disable-rexec \
                    --disable-rlogin \
                    --disable-rsh \
                    --disable-servers

Betydningen av konfigurasjonsalternativene:

--disable-logger
   Dette alternativet forhindrer Inetutils i å installere logger programmet, som brukes av skript for å sende meldinger til System Log Daemon. Ikke installer den fordi Util-linux installerer en nyere versjon.

--disable-whois
   Dette alternativet deaktiverer bygningen til Inetutils whois klienten, som er utdatert. Instruksjoner for en bedre whois klient er i BLFS boken.

--disable-r*
   Disse parameterne deaktiverer byggingen av foreldede programmer som ikke bør brukes på grunn av sikkerhetsproblemer. Funksjonene som tilbys av disse programmene kan leveres av openssh pakken i BLFS boken.

--disable-servers
   Dette deaktiverer installasjonen av forskjellige nettverksservere som er inkludert som en del av Inetutils pakken. Disse serverne anses ikke som passende i et grunnleggende LFS system. Noen er usikre av natur og anses bare som trygge i pålitelige nettverk. Vær oppmerksom på at bedre erstatninger er tilgjengelige for mange av disse serverne.

Kompilere pakken:

make

For å teste resultatene:

make check

Én test, libls.sh, kan mislykkes i det opprinnelige chroot-miljøet, men vil bestå hvis testen kjøres på nytt etter at LFS systemet er fullført. Én test, ping-localhost.sh, vil mislykkes hvis vertssystemet ikke har ipv6.

Installer pakken:

make install

Flytt noen programmer slik at de er tilgjengelige hvis / usr ikke er tilgjengelig:

mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
mv -v /usr/bin/ifconfig /sbin

6.40.2. Innholdet i Inetutils

Installerte programmer: dnsdomainname, ftp, ifconfig, hostname, ping, ping6, talk, telnet, tftp, 0g traceroute

 

Kort beskrivelse

dnsdomainname - Vis systemets DNS domenenavn

ftp - Er filoverføringsprotokollprogrammet

hostname - Rapporterer eller angir navnet på verten

ifconfig - Behandler nettverksgrensesnitt

ping - Sender pakker med ekko-forespørsel og rapporterer hvor lang tid svarene tar

ping6 - En versjon av ping for IPv6-nettverk

talk - Brukes til å chatte med en annen bruker

telnet - Et grensesnitt til TELNET protokollen

tftp - Et trivielt filoverføringsprogram

traceroute - Sporer ruten som pakkene dine tar fra verten du jobber på, til en annen vert i et nettverk, og viser alle de mellomliggende portnerne (gateways) underveis

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.41. Perl-5.30.1

Perl pakken inneholder praktisk uttrekk og rapportspråk (Practical Extraction and Report Language).

 

Omtrentlig byggetid: 9.2 SBU

Nødvendig diskplass: 272 MB

6.41.1. Installasjon av Perl

Opprett først en grunnleggende fil /etc/hosts som det skal refereres til i en av Perls konfigurasjonsfiler, så vel som den valgfrie testpakken:

echo "127.0.0.1 localhost $(hostname)" > /etc/hosts

Denne versjonen av Perl bygger nå Compress::Raw::Zlib og Compress::Raw::BZip2 modulene. Perl vil som standard bruke en intern kopi av kildene for byggingen. Utfør følgende kommando slik at Perl bruker bibliotekene installert på systemet:

export BUILD_ZLIB=False
export BUILD_BZIP2=0

For å ha full kontroll over måten Perl er satt opp, kan du fjerne “-des” -alternativene fra følgende kommando og velge måten pakken bygges på. Alternativt kan du bruke kommandoen nøyaktig som nedenfor for å bruke standardene som Perl oppdager automatisk:

sh Configure -des -Dprefix=/usr \
                       -Dvendorprefix=/usr \
                       -Dman1dir=/usr/share/man/man1 \
                       -Dman3dir=/usr/share/man/man3 \
                       -Dpager="/usr/bin/less -isR" \
                       -Duseshrplib \
                       -Dusethreads

Betydningen av konfigurasjonsalternativene:

-Dvendorprefix=/usr
  Dette sikrer at perl vet hvordan de skal fortelle pakker hvor de skal installere perl modulene sine.

-Dpager="/usr/bin/less -isR"
  Dette sikrer at less brukes i stedet for more.

-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
  Siden Groff ikke er installert ennå, mener Configure at vi ikke vil ha man sider for Perl. Å utstede disse parametrene overstyrer denne beslutningen.

-Duseshrplib
  Bygger en delt libperl som noen perl moduler trenger.

-Dusethreads
  Bygger perl med støtte for threads.

Kompilere pakken:

make

Hvis du vil teste resultatene (omtrent 11 SBU), utfør:

make test

Installer pakken og rydde opp:

make install
unset BUILD_ZLIB BUILD_BZIP2

6.41.2. Innholdet i Perl

Installerte programmer: corelist, cpan, enc2xs, encguess, h2ph, h2xs, instmodsh, json_pp, libnetcfg, perl, perl5.30.1 (hard lenke til perl), perlbug, perldoc, perlivp, perlthanks (hard lenke til perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, pod2usage, podchecker, podselect, prove, ptar, ptardiff, ptargrep, shasum, splain, xsubpp, og zipdetails

Installerte biblioteker: Mange som ikke alle kan vises her

Installert mappe: /usr/lib/perl5

 

Kort beskrivelse

corelist - En kommandolinje for grenseflaten til Module::CoreList

cpan - Samhandle med det omfattende  Comprehensive Archive Network (CPAN) fra kommandolinjen

enc2xs - Bygger en Perl utvidelse for Encode modulen fra enten Unicode Character Mappings eller Tcl Encoding Files

encguess - Gjetter kodingstypen til en eller flere filer

h2ph - Konverterer .h C deklarasjoner til .ph Perl deklarasjoner

h2xs - Konverterer .h C deklarasjoner til Perl utvidelser

instmodsh - Shell skript for å undersøke installerte Perl moduler, og kan lage en tarball fra en installert modul

json_pp - Konverterer data mellom visse inngangs- og utdataformater

libnetcfg - Kan brukes til å konfigurere libnet Perl modulen

perl - Kombinerer noen av de beste funksjonene til C, sed, awk og sh til et enkelt multiverktøy språk

perl5.30.1 - En hard lenke til perl

perlbug - Brukes til å generere feilrapporter om Perl, eller modulene som følger med, og sende dem

perldoc - Viser et dokumentasjon i pod-format som er innebygd i Perl installasjonstreet eller i et Perl skript

perlivp - Verifiseringsprosedyre for installasjon av Perl; det kan brukes til å bekrefte at Perl og bibliotekene er riktig installert

perlthanks - Brukes til å generere takkemeldinger til Perl utviklerne

piconv - En Perl versjon av tegnkodingskonverteringen iconv

pl2pm - Et grovt verktøy for å konvertere Perl4 .pl filer til Perl5 .pm moduler

pod2html - Konverterer filer fra pod format til HTML format

pod2man - Konverterer poddata til formatert *roff inndata

pod2text - Konverterer poddata til formatert ASCII-tekst

pod2usage - Skriver ut bruksmeldinger fra innebygde pod dokumenter i filer

podchecker - Kontrollerer syntaks for dokumentasjonsfiler for podformat

podselect - Viser utvalgte deler av pod dokumentasjonen

prove - Kommandolinjeverktøy for å kjøre tester mot Test::Harness modulen

ptar - Et tar lignende program skrevet i Perl

ptardiff - Et Perl program som sammenligner et utpakket arkiv med et som ikke er utpakket

ptargrep - Et Perl program som bruker mønstermatching på innholdet i filer i et tar arkiv

shasum - Skriver ut eller sjekker SHA sjekksummer

splain - Brukes til å tvinge ordentlig advarselsdiagnostikk i Perl

xsubpp - Konverterer Perl XS kode til C kode

zipdetails - Viser detaljer om den interne strukturen i en zip-fil

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.42. XML::Parser-2.46

XML::Parser modulen er et Perl-grensesnitt til James Clarks XML-parser, Expat.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 2.4 MB

6.42.1. Installasjon av XML::Parser

Forbered XML::Parser for kompilering:

perl Makefile.PL

Kompilere pakken:

make

For å teste resultatene:

make test

Installer pakken:

make install

6.42.2. Innholdet i XML::Parser

Installert modul: Expat.so

 

Kort beskrivelse

Expat - gir Perl Expat grensesnittet

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.43. Intltool-0.51.0

Intltool er et internasjonaliseringsverktøy som brukes til å trekke ut oversettbare strenger fra kildefiler.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 1.5 MB

6.43.1. Installasjon av Intltool

Først fikser du en advarsel som er forårsaket av perl-5.22 og senere:

sed -i 's:\\\${:\\\$\\{:' intltool-update.in

Forbered Intltool for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install
install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO

6.43.2. Innholdet i Intltool

Installerte programmer: intltool-extract, intltool-merge, intltool-prepare, intltool-update, and intltoolize

Installert mappe: /usr/share/doc/intltool-0.51.0 og /usr/share/intltool

 

Kort beskrivelse

intltoolize - Forbereder en pakke for å bruke intltool

intltool-extract - Genererer deklarasjoner som kan leses av gettext

intltool-merge - Slår sammen oversatte strenger til forskjellige filtyper

intltool-prepare - Oppdaterer pottfiler og slår dem sammen med oversettelsesfiler

intltool-update - Oppdaterer po-malfilene og slår dem sammen med oversettelsene

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.44. Autoconf-2.69

Autoconf pakken inneholder programmer for å produsere skallskript som automatisk kan konfigurere kildekoden.

 

Omtrentlig byggetid: mindre enn 0,1 SBU (ca. 3,2 SBU med tester)

Nødvendig diskplass: 79 MB

6.44.1. Installasjon av Autoconf

Først må du fikse en feil generert av Perl 5.28.

sed '361 s/{/\\{/' -i bin/autoscan.in

Forbered Autoconf for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

Testpakken er for tiden ødelagt av bash-5 og libtool-2.4.3. Hvis du vil kjøre testene uansett, kjør følgende:

make check

Installer pakken:

make install

6.44.2. Innholdet i Autoconf

Installert program: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate, and ifnames

Installert mappe: /usr/share/autoconf

 

Kort beskrivelse

autoconf - Produserer skallskript som automatisk konfigurerer programvarekildekodepakker for å tilpasse seg mange typer Unix lignende systemer; konfigurasjonsskriptene som produsereres er uavhengige - å kjøre dem krever ikke autoconf programmet

autoheader - Et verktøy for å lage malfiler med C #define setninger for konfigurering for bruk

autom4te - En innpakning for makroprosessoren M4

autoreconf - Kjør automatisk autoconf, autoheader, aclocal, automake, gettextize og libtoolize i riktig rekkefølge for å spare tid når det gjøres endringer i autoconf og automake malfiler

autoscan - Hjelper med å lage en configure.in fil for en programvarepakke; den undersøker kildefilene i et mappetre, søker i dem etter vanlige portabilitetsproblemer, og oppretter en configure.scan fil som fungerer som en foreløpig configure.in fil for pakken

autoupdate - Endrer en configure.in fil som fremdeles kaller autoconf makroer med sine gamle navn for å bruke de gjeldende makronavnene

ifnames - Hjelper når du skriver configure.in filer for en programvarepakke; den skriver ut identifikasjonene som pakken bruker i C forbehandlingsbetingelser [Hvis en pakke allerede er satt opp for å ha en viss portabilitet, kan dette programmet hjelpe deg med å bestemme hva configure må kontrollere. Det kan også fylle ut hull i en configure.in fil generert av autoscan.]

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.45. Automake-1.16.1

Automake pakken inneholder programmer for å generere Make filer for bruk med Autoconf.

 

Omtrentlig byggetid: mindre enn 0,1 SBU (ca. 8,1 SBU med tester)

Nødvendig diskplass: 107 MB

6.45.1. Installasjon av Automake

Forbered Automake for kompilering:

./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.1

Kompilere pakken:

make

Å bruke -j4 gjør alternativet raskere for testene, selv på systemer med bare en prosessor, på grunn av interne forsinkelser i individuelle tester. For å teste resultatene:

make -j4 check

En test er kjent for å mislykkes i LFS miljøet: subobj.sh.

Installer pakken:

make install

6.45.2. Innholdet i Automake

Installerte programmer: aclocal, aclocal-1.16 (hard lenket med aclocal), automake, and automake-1.16 (hard lenket med automake)

Installerte mapper: /usr/share/aclocal-1.16, /usr/share/automake-1.16, og /usr/share/doc/automake-1.16.1

 

Kort beskrivelse

aclocal - Genererer aclocal.m4 filer basert på innholdet i configure.in filer

aclocal-1.16 - En hard lenke til aclocal

automake - Et verktøy for automatisk å generere Makefile.in filer fra Makefile.am filer [For å opprette alle Makefile.in filene for en pakke, kjører du dette programmet i øverste mappe. Ved å skanne configure.in filen, finner den automatisk hver passende Makefile.am fil og genererer den tilsvarende Makefile.in filen.]

automake-1.16 - En hard lenke til automake

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.46. Kmod-26

Kmod pakken inneholder biblioteker og verktøy for å laste inn kjernemoduler

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 13 MB

6.46.1. Installasjon av Kmod

Forbered Kmod for kompilering:

./configure --prefix=/usr \
                    --bindir=/bin \
                    --sysconfdir=/etc \
                    --with-rootlibdir=/lib \
                    --with-xz \
                    --with-zlib

Betydningen av konfigurasjonsalternativene:

--with-xz, --with-zlib
   Disse alternativene gjør det mulig for Kmod å håndtere komprimerte kjernemoduler.

--with-rootlibdir=/lib
   Dette alternativet sikrer at forskjellige bibliotekrelaterte filer blir plassert i de riktige katalogene.

Kompilere pakken:

make

Denne pakken kommer ikke med en testsuite som kan kjøres i LFS chroot-miljøet. Som et minimum kreves git programmet, og flere tester vil ikke kjøres utenfor et git lager.

Installer pakken, og lag symlenker for kompatibilitet med Module-Init-Tools (pakken som tidligere har håndtert Linux kjernemoduler):

make install

 

for target in depmod insmod lsmod modinfo modprobe rmmod; do
    ln -sfv ../bin/kmod /sbin/$target
done

 

ln -sfv kmod /bin/lsmod

6.46.2. Innholdet i Kmod

Installerte programmer: depmod (linker til kmod), insmod (linker til kmod), kmod, lsmod (linker til kmod), modinfo (linker til kmod), modprobe (linker til kmod), og rmmod (linker til kmod)

Installert bibliotek: libkmod.so

 

Kort beskrivelse

depmod - Oppretter en avhengighetsfil basert på symbolene den finner i det eksisterende settet med moduler; denne avhengighetsfilen brukes av modprobe til automatisk å laste de nødvendige modulene

insmod - Installerer en lastbar modul i den kjørende kjernen

kmod - Laster og avlaster kjernemoduler

lsmod - Lister moduler som er lastet inn

modinfo - Undersøker en objektfil tilknyttet en kjernemodul og viser all informasjon som den kan hente inn

modprobe - Bruker en avhengighetsfil, opprettet av depmod, for automatisk å laste inn relevante moduler

rmmod - Avlaster moduler fra den kjørende kjernen

libkmod - Dette biblioteket brukes av andre programmer til å laste inn og avlaste kjernemoduler

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.47. Gettext-0.20.1

Gettext pakken inneholder verktøy for internasjonalisering og lokalisering. Disse tillater programmer å bli kompilert med NLS (Native Language Support), slik at de kan sende ut meldinger på brukerens morsmål.

 

Omtrentlig byggetid: 2.7 SBU

Nødvendig diskplass: 249 MB

6.47.1. Installasjon av Gettext

Forbered Gettext for kompilering:

./configure --prefix=/usr \
                    --disable-static \
                    --docdir=/usr/share/doc/gettext-0.20.1

Kompilere pakken:

make

For å teste resultatene (dette tar lang tid, rundt 3 SBUer), utfør:

make check

Installer pakken:

make install
chmod -v 0755 /usr/lib/preloadable_libintl.so

6.47.2. Innholdet i Gettext

Installerte programmer: autopoint, envsubst, gettext, gettext.sh, gettextize, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, recode-sr-latin, og xgettext

Installerte biblioteker: libasprintf.so, libgettextlib.so, libgettextpo.so, libgettextsrc.so, libtextstyle.so, og preloadable_libintl.so

Installerte mapper: /usr/lib/gettext, /usr/share/doc/gettext-0.20.1, /usr/share/gettext, og /usr/share/gettext-0.19.8

 

Kort beskrivelse

autopoint - Kopierer standard Gettext infrastrukturfiler til en kildepakke

envsubst - Erstatter miljøvariabler i skallformatstrenger

gettext - Oversetter en naturlig språkmelding til brukerens språk ved å slå opp oversettelsen i en meldingskatalog

gettext.sh - Primært fungerer som et skallfunksjonsbibliotek for gettext

gettextize - Kopierer alle standard Gettext filer til den gitte toppmappen i en pakke for å begynne å internasjonalisere dem

msgattrib - Filtrerer meldingene i en oversettelseskatalog i henhold til attributtene deres og manipulerer attributtene

msgcat - Sammenkjeder og slår sammen de gitte .po filene

msgcmp - Sammenligner to .po filer for å sjekke at begge inneholder det samme settet med msgid strenger

msgcomm - Finner meldingene som er felles for de gitte .po filene

msgconv - Konverterer en oversettelseskatalog til en annen tegnkoding

msgen - Oppretter en engelsk oversettelseskatalog

msgexec - Bruker en kommando på alle oversettelser av en oversettelseskatalog

msgfilter - Bruker et filter på alle oversettelser av en oversettelseskatalog

msgfmt - Genererer en binær meldingskatalog fra en oversettelseskatalog

msggrep - Trekker ut alle meldinger fra en oversettelseskatalog som samsvarer med et gitt mønster eller tilhører noen gitte kildefiler

msginit - Oppretter en ny .po fil, initialiserer metainformasjonen med verdier fra brukerens miljø

msgmerge - Kombinerer to rå oversettelser til en enkelt fil

msgunfmt - Dekompilerer en binær meldingskatalog til rå oversettelsestekst

msguniq - Forener dupliserte oversettelser i en oversettelseskatalog

ngettext - Viser morsmål oversettelser av en tekstmelding hvis grammatiske form er avhengig av et nummer

recode-sr-latin - Rekoder serbisk tekst fra kyrillisk til latin skrift

xgettext - Trekker ut de oversettbare meldingslinjene fra de gitte kildefilene for å lage den første oversettelsesmalen

libasprintf - definerer autosprintf klassen, som gjør C formaterte utdatarutiner brukbare i C++ programmer, for bruk med <string>  strengene og <iostream>  strømmene

libgettextlib - et privat bibliotek som inneholder vanlige rutiner som brukes av de forskjellige Gettext programmene; disse er ikke beregnet for generell bruk

libgettextpo - Brukes til å skrive spesialiserte programmer som behandler .po filer; dette biblioteket brukes når standardprogrammene som er sendt med Gettext (for eksempel msgcomm, msgcmp, msgattrib og msgen) ikke vil være tilstrekkelig

libgettextsrc - Et privat bibliotek som inneholder vanlige rutiner som brukes av de forskjellige Gettext programmene; disse er ikke beregnet for generell bruk

libtextstyle - Tekst styling bibliotek

preloadable_libintl - Et bibliotek, beregnet på å brukes av LD_PRELOAD som hjelper libintl med å logge meldinger som ikke er oversatt

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.48. Libelf fra Elfutils-0.178

Libelf er et bibliotek for å håndtere ELF filer (kjørbar og sammenkoblebare format).

 

Omtrentlig byggetid: 0.9 SBU

Nødvendig diskplass: 124 MB

6.48.1. Installasjon av Libelf

Libelf er en del av pakken elfutils-0.178. Bruk elfutils-0.178.tar.bz2 som kilde tarball.

Forbered Libelf for kompilering:

./configure --prefix=/usr --disable-debuginfod

Kompilere pakken:

make

For å teste resultatene, utfør:

make check

En test, run-elfclassify.sh, er kjent for å mislykkes.

Bare installer Libelf:

make -C libelf install
install -vm644 config/libelf.pc /usr/lib/pkgconfig
rm /usr/lib/libelf.a

6.48.2. Innholdet i Libelf

Installert bibliotek: libelf.so

Installert mappe: /usr/include/elfutils

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.49. Libffi-3.3

Libffi biblioteket gir et overførbart programmeringsgrensesnitt på høyt nivå til forskjellige anropskonvensjoner. Dette lar en programmerer kalle enhver funksjon spesifisert av et kall til en grensesnittbeskrivelse på kjøretid.

 

Omtrentlig byggetid: 1.9 SBU

Nødvendig diskplass: 10 MB

6.49.1. Installasjon av Libffi

I likhet med GMP bygges libffi med optimaliseringer som er spesifikke for prosessoren som er i bruk. Hvis du bygger for et annet system, kan du eksportere CFLAGS og CXXFLAGS for å spesifisere en generisk konstruksjon for arkitekturen din. Hvis dette ikke gjøres, vil alle applikasjoner som lenker til libffi utløse ulovlige operasjonsfeil.

Forbered Libffi for kompilering:

./configure --prefix=/usr --disable-static --with-gcc-arch=native

Betydningen av konfigurasjonsalternativet:

--with-gcc-arch=native
  Forsikre deg om at gcc er optimalisert for det gjeldende systemet. Hvis dette ikke er spesifisert, gjettes systemet og koden som genereres kanskje ikke er korrekt for noen systemer. Hvis den genererte koden vil bli kopiert fra det opprinnelige systemet til et mindre kapabelt system, bruker du det mindre kapable systemet som en parameter. For detaljer om alternative systemtyper, se alternativene x86 i gcc-manualen.

Kompilere pakken:

make

For å teste resultatene:

make check

Seks tester, alle relatert til test-callback.c, er kjent for å mislykkes.

Installer pakken:

make install

6.49.2. Innholdet i Libffi

Installert bibliotek: libffi.so

 

Kort beskrivelse

libffi - inneholder libffi API funksjoner.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.50. OpenSSL-1.1.1d

OpenSSL pakken inneholder administrasjonsverktøy og biblioteker relatert til kryptografi. Disse er nyttige for å tilby kryptografiske funksjoner til andre pakker, for eksempel OpenSSH, e-postapplikasjoner og nettlesere (for tilgang til HTTPS nettsteder).

 

Omtrentlig byggetid: 2.1 SBU

Nødvendig diskplass: 146 MB

6.50.1. Installasjon av OpenSSL

Forbered OpenSSL for kompilering:

./config --prefix=/usr \
              --openssldir=/etc/ssl \
              --libdir=lib \
              shared \
              zlib-dynamic

Kompilere pakken:

make

For å teste resultatene:

make test

En undertest i testen 20-test_enc.t er kjent for å mislykkes.

Installer pakken:

sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install

Installer dokumentasjonen om ønskelig:

mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1d
cp -vfr doc/* /usr/share/doc/openssl-1.1.1d

6.50.2. Innholdet i OpenSSL

Installerte programmer: c_rehash og openssl

Installerte biblioteker: libcrypto.{so,a} og libssl.{so,a}

Installerte mapper: /etc/ssl, /usr/include/openssl, /usr/lib/engines og /usr/share/doc/openssl-1.1.1d

 

Kort beskrivelse

c_rehash - er et Perl skript som skanner alle filene i en mappe og legger til symbolske lenker til hash verdiene deres.

openssl - er et kommandolinjeverktøy for å bruke de forskjellige kryptografifunksjonene i OpenSSLs kryptobibliotek fra skallet. Den kan brukes til forskjellige funksjoner som er dokumentert i man 1 openssl.

libcrypto.so - implementerer et bredt spekter av kryptografiske algoritmer som brukes i forskjellige internettstandarder. Tjenestene som tilbys av dette biblioteket brukes av OpenSSL implementeringene av SSL, TLS og S/MIME, og de har også blitt brukt til å implementere OpenSSH, OpenPGP og andre kryptografiske standarder.

libssl.so - implementerer protokollen Transport Layer Security (TLS v1). Det gir et rikt API, dokumentasjon kan du finne ved å utføre man 3 ssl.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.51. Python-3.8.1

Python 3 pakken inneholder Python utviklingsmiljøet. Det er nyttig for objektorientert programmering, skrive skript, prototype store programmer eller utvikle hele applikasjoner.

 

Omtrentlig byggetid: 1.2 SBU

Nødvendig diskplass: 426 MB

6.51.1. Installasjon av Python 3

Forbered Python 3 for kompilering:

./configure --prefix=/usr \
                    --enable-shared \
                    --with-system-expat \
                    --with-system-ffi \
                    --with-ensurepip=yes

Betydningen av konfigurasjonsalternativene:

--with-system-expat
   Denne bryteren muliggjør kobling mot systemversjonen av Expat

--with-system-ffi
   Denne bryteren muliggjør kobling mot systemversjonen av libffi.

--with-ensurepip=yes
   Denne bryteren muliggjør å bygge pip og setuptools pakkeprogrammer.

Kompilere pakken:

make

For å teste resultatene, utfør make test. Noen tester som krever nettverkstilkobling eller tilleggspakker, hoppes over. Testen som heter test_normalisering mislykkes fordi nettverkskonfigurasjonen ikke er fullført ennå. For mer omfattende resultater, kan testen kjøres på nytt når Python 3 er installert på nytt i BLFS.

Installer pakken:

make install
chmod -v 755 /usr/lib/libpython3.8.so
chmod -v 755 /usr/lib/libpython3.so
ln -sfv pip3.8 /usr/bin/pip3

Betydningen av installasjonskommandoer:

--no-same-owner og --no-same-permissions
   Sikre at de installerte filene har riktig eierforhold og tillatelser. Uten disse alternativene vil bruk av tar installere pakkefilene med utviklerens verdier.

6.51.2. Innholdet i Python 3

Installerte programmer: 2to3, idle3, pip3, pydoc3, python3, og python3-config

Installerte biblioteker: libpython3.8.so og libpython3.so

Installert mapper: /usr/include/python3.8, /usr/lib/python3, og /usr/share/doc/python-3.8.1

 

Kort beskrivelse

2to3 - er et Python-program som leser Python 2.x kildekode og bruker en serie rettelser for å transformere den til gyldig Python 3.x kode.

idle3 - er et innpakningsskript som åpner en Python GUI redigerer. For at dette skriptet skal kjøres, må du ha installert Tk før Python slik at Tkinter Python modulen er bygget.

pip3 - Pakkeinstallasjonsprogrammet for Python. Du kan bruke pip til å installere pakker fra Python Package Index og andre indekser.

pydoc3 - er Python dokumentasjonsverktøy.

python3 - er et tolket, interaktivt, objektorientert programmeringsspråk.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.52. Ninja-1.10.0

Ninja er et lite byggesystem med fokus på hastighet.

 

Omtrentlig byggetid: 0.3 SBU

Nødvendig diskplass: 89 MB

6.52.1. Installasjon av Ninja

Når ninja kjøres, kjører ninja normalt maksimalt antall prosesser parallelt. Som standard er dette antall kjerner på systemet pluss to. I noen tilfeller kan dette overopphete en CPU eller bruke opp alt minnet på systemet. Hvis det kjøres fra kommandolinjen, vil bruken av en -jN-parameter begrense antallet parallelle prosesser, men noen pakker legger inn utførelsen av ninja og bruker ikke en -j-parameter.

Ved å bruke den valgfrie prosedyren nedenfor, tillater en bruker å begrense antall parallelle prosesser via en miljøvariabel, NINJAJOBS. For eksempel innstilling:

export NINJAJOBS=4

vil begrense ninja til fire parallelle prosesser.

Legg til evnen til å bruke miljøvariabelen NINJAJOBS hvis du ønsker:

sed -i '/int Guess/a \
    int j = 0;\
    char* jobs = getenv( "NINJAJOBS" );\
    if ( jobs != NULL ) j = atoi( jobs );\
    if ( j > 0 ) return j;\
' src/ninja.cc

Bygg Ninja med:

python3 configure.py --bootstrap

Betydningen av byggealternativet:

--bootstrap
   Denne parameteren tvinger ninja til å gjenoppbygge seg selv for det nåværende systemet.

For å teste resultatene:

./ninja ninja_test
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots

Installer pakken:

install -vm755 ninja /usr/bin/
install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja

6.52.2. Innholdet i Ninja

Installert program: ninja

 

Kort beskrivelse

ninja - er Ninja byggesystemet.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.53. Meson-0.53.1

Meson er et open source byggesystem ment å være både ekstremt raskt, og enda viktigere, så brukervennlig som mulig.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 31 MB

6.53.1. Installasjon av Meson

Kompiler Meson med følgende kommando:

python3 setup.py build

Denne pakken kommer ikke med en testsuite.

Installer pakken:

python3 setup.py install --root=dest
cp -rv dest/* /

Betydningen av installasjonsparametrene:

--root=dest
   Som standard installerer python3 setup.py install forskjellige filer (for eksempel man sider) i Python Egg. Med en spesifisert rotplassering installerer setup.py disse filene i et standardhierarki. Da kan vi bare kopiere hierarkiet slik at filene vil være på standardplassering.

6.53.2. Innholdet i Meson

Installert program: meson

Installerte mapper: /usr/lib/python3.8/site-packages/meson-0.53.1-py3.8.egg-info and /usr/lib/python3.8/site-packages/mesonbuild

 

Kort beskrivelse

meson - Et høyt produktivitetsbyggingssystem

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.54. Coreutils-8.31

Coreutils pakken inneholder verktøy for å vise og sette de grunnleggende systemegenskapene.

 

Omtrentlig byggetid: 2.3 SBU

Nødvendig diskplass: 202 MB

6.54.1. Installasjon av Coreutils

POSIX krever at programmer fra Coreutils gjenkjenner tegn grenser riktig selv i multibytes lokasjoner. Følgende oppdatering løser denne feilen og andre internasjonaliseringsrelaterte feil.

patch -Np1 -i ../coreutils-8.31-i18n-1.patch

I det siste ble det funnet mange feil i denne oppdateringen. Når du rapporterer nye feil til Coreutils vedlikeholdere, må du først sjekke om de er reproduserbare uten denne oppdateringen.

Hindre en test som på noen maskiner kan sløyfe for alltid:

sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk

Forbered nå Coreutils for kompilering:

autoreconf -fiv
FORCE_UNSAFE_CONFIGURE=1 ./configure \
                          --prefix=/usr \
                          --enable-no-install-program=kill,uptime

Betydningen av konfigurasjonsalternativene:

autoreconf
   Denne kommandoen oppdaterer genererte konfigurasjonsfiler i samsvar med den siste versjonen av automake.

FORCE_UNSAFE_CONFIGURE=1
   Denne miljøvariabelen gjør at pakken kan bygges som root bruker.

--enable-no-install-program=kill,uptime
   Formålet med denne bryteren er å forhindre at Coreutils installerer binære filer som vil bli installert av andre pakker senere.

Kompiler pakken:

make

Hopp ned til “Installer pakken” hvis du ikke kjører testpakken.

Nå er testsuiten klar til å kjøres. Kjør først testene som er ment å kjøres som bruker root:

make NON_ROOT_USERNAME=nobody check-root

Vi kommer til å kjøre resten av testene som bruker nobody. Enkelte tester krever imidlertid at brukeren er medlem av mer enn en gruppe. Sånn at disse testene ikke blir hoppet over, legger vi til en midlertidig gruppe og gjør brukeren nobody til medlem av den:

echo "dummy:x:1000:nobody" >> /etc/group

Fikser noen av tillatelsene slik at ikke-root-brukeren kan kompilere og kjøre testene:

chown -Rv nobody .

Nå kjør testene. Forsikre deg om at STIEN i su miljøet inkluderer /tools/bin.

su nobody -s /bin/bash \
                   -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

Testprogrammet test-getlogin er kjent for å mislykkes i et delvis bygget systemmiljø som chroot-miljøet her, men passerer hvis det kjøres på slutten av dette kapitlet. Testprogrammet tty.sh er også kjent for å mislykkes.

Fjern den midlertidige gruppen:

sed -i '/dummy/d' /etc/group

Installer pakken:

make install

Flytt programmer til stedene som er spesifisert av FHS:

mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8

Noen av skriptene i LFS-Bootscripts-pakken er avhengig av head, nice, sleep, og touch. Ettersom /usr kanskje ikke er tilgjengelig i de tidlige og sene stadiene av oppstart, må disse binærene være på root partisjonen for å opprettholde FHS samsvar:

mv -v /usr/bin/{head,nice,sleep,touch} /bin

6.54.2. Innholdet i Coreutils

Installerte programmer: [, b2sum, base32, base64, basename, basenc, cat, chcon, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync, tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, og yes

Installerte biblioteker: libstdbuf.so (i /usr/libexec/coreutils)

Installerte mapper: /usr/libexec/coreutils

 

Kort beskrivelse

base32 - Koder og avkoder data i henhold til base32 spesifikasjonen (RFC 4648)

base64 - Koder og avkoder data i henhold til base64 spesifikasjonen (RFC 4648)

b2sum - Skriver ut eller sjekker BLAKE2 (512-bit) sjekksum

basename - Stripper hvilken som helst bane og en gitt endelse fra et filnavn

basenc - Koder eller avkoder data ved hjelp av forskjellige algoritmer

cat - Sammenføyer filer til standardutgang

chcon - Endrer sikkerhetskontekst for filer og kataloger

chgrp - Endrer gruppeeierskap til filer og kataloger

chmod - Endrer tillatelsene til hver fil til den gitte modusen; modusen kan være en symbolsk fremstilling av endringene som skal gjøres, eller et oktalt tall som representerer de nye tillatelsene

chown - Endrer bruker- og/eller gruppeeierskap til filer og kataloger

chroot - Kjører en kommando med den spesifiserte katalogen som / directory

cksum - Skriver ut kontrollsum for Cyclic Redundancy Check (CRC) og byte tellingene for hver spesifisert fil

comm - Sammenligner to sorterte filer, skriver ut i tre kolonner linjene som er unike og linjene som er vanlige

cp - Kopierer filer

csplit - Deler en gitt fil inn i flere nye filer, skiller dem i henhold til gitte mønstre eller linjenumre og legger ut byte tellingen for hver ny fil

cut - Skriver ut seksjonslinjer og velger deler i henhold til gitte felt eller posisjoner

date - Viser gjeldende tid i det gitte formatet, eller angir systemdatoen

dd - Kopierer en fil ved å bruke den angitte blokkstørrelsen og tellingen, mens du eventuelt utfører konverteringer på den

df - Rapporterer hvor mye diskplass som er tilgjengelig (og brukt) på alle monterte filsystemer, eller bare på filsystemene som har de valgte filene

dir - Viser innholdet i hver gitt katalog (det samme som ls kommandoen)

dircolors - Utgir kommandoer for å stille inn miljøvariabelen LS_COLOR for å endre fargeskjemaet som brukes av ls

dirname - Stripper ikke-mappe endelse fra et filnavn

du - Rapporterer hvor mye diskplass som brukes av den gjeldende mappen, av hvert av de gitte mappene (inkludert alle undermapper) eller av hver av de gitte filene

echo - Viser de oppgitte strengene

env - Kjører en kommando i et modifisert miljø

expand - Konverterer tabulator til mellomrom

expr - Evaluerer uttrykk

factor - Skriver ut primfaktorene for alle spesifiserte heltallstall

false - Gjør ingenting, uten hell; den kommer alltid ut med en statuskode som indikerer feil

fmt - Omformaterer avsnittene i de gitte filene

fold - Pakker inn linjene i de gitte filene

groups - Rapporterer en brukers gruppemedlemskap

head - Skriver ut de første ti linjene (eller det gitte antall linjer) for hver gitt fil

hostid - Rapporterer den numeriske identifikatoren (i heksadesimal) for verten

id - Rapporterer effektiv bruker-ID, gruppe-ID og gruppemedlemskap for den nåværende brukeren eller den spesifiserte brukeren

install - Kopierer filer mens du stiller inn tillatelsesmodus og om mulig eier og gruppe

join - Skjøter sammen linjene som har identiske sammenkoblingsfelt fra to separate filer

link - Oppretter en hard lenke med det gitte navnet til en fil

ln - Lager harde lenker eller myke (symbolske) koblinger mellom filer

logname - Rapporter den gjeldende brukerens påloggingsnavn

ls - Viser innholdet i hver gitt mappe

md5sum - Rapporter eller sjekker meldingssum for Message Digest 5 (MD5)

mkdir - Oppretter mapper med de gitte navnene

mkfifo - Oppretter First-In, First-Outs (FIFOs), et "navngitt rør" i UNIX parlance, med de gitte navnene

mknod - Oppretter enhetsnoder med de gitte navnene; en enhetsnode er en spesiell tegnsfil, en spesiell blokkeringsfil eller en FIFO

mktemp - Oppretter midlertidige filer på en sikker måte; det brukes i skript

mv - Flytter eller gir nytt navn til filer eller mapper

nice - Kjører et program med endret planleggingsprioritet

nl - Teller linjene fra de gitte filene

nohup - Kjører en kommando som er immun mot hangups, og utgangen blir omdirigert til en loggfil

nproc - Skriver ut antall behandlingsenheter som er tilgjengelige for en prosess

numfmt - Konverterer tall til eller fra menneskelige lesbare strenger

od - Dumper filer i oktale og andre formater

paste - Slår sammen de gitte filene, og sammenføyer sekvensielt korresponderende linjer side om side, atskilt av tabulatortegn

pathchk - Sjekker om filnavn er gyldige eller flyttbare

pinky - Er en lett fingerklient; den rapporterer litt informasjon om de gitte brukerne

pr - Paginerer og kolonnerer filer for utskrift

printenv - Skriver ut miljøet

printf - Skriver ut de gitte argumentene i henhold til det gitte formatet, omtrent som C printf funksjonen

ptx - Produserer en permutert indeks fra innholdet i de gitte filene, med hvert nøkkelord i sin sammenheng

pwd - Rapporterer navnet på den gjeldende arbeids mappen

readlink - Rapporterer verdien til den gitte symbolkoblingen

realpath - Skriver ut den løste banen

rm - Sletter filer eller kataloger

rmdir - Sletter mapper hvis de er tomme

runcon - Kjører en kommando med spesifisert sikkerhetskontekst

seq - Skriver ut en sekvens med tall innenfor et gitt område og med et gitt trinn

sha1sum - Skriver ut eller sjekker 160-biters Secure Hash Algoritm 1 (SHA1) sjekksummer

sha224sum - Skriver ut eller sjekker 224 biters sjekksummer for Secure Hash Algorithm

sha256sum - Skriver ut eller sjekker 256 biters sjekksummer for Secure Hash Algorithm

sha384sum - Skriver ut eller sjekker 384 biters sjekksummer for Secure Hash Algorithm

sha512sum - Skriver ut eller sjekker 512 biters sjekksummer for Secure Hash Algorithm

shred - Overskriver de gitte filene gjentatte ganger med komplekse mønstre, noe som gjør det vanskelig å gjenopprette dataene

shuf - Blander tekstlinjer

sleep - Pauser i den angitte tiden

sort - Sorterer linjene fra de gitte filene

split - Deler den gitte filen opp i deler, etter størrelse eller antall linjer

stat - Viser fil- eller filsystemstatus

stdbuf - Kjører kommandoer med endrede bufferoperasjoner for standardstrømmer

stty - Angir eller rapporterer terminallinjeinnstillinger

sum - Skriver ut kontrollsum og blokkteller for hver gitt fil

sync - Spyler filsystembuffere; det tvinger endrede blokker til disk og oppdaterer superblokken

tac - Sammenføyer de gitte filene omvendt

tail - Skriver ut de siste ti linjene (eller det gitte antall linjer) for hver gitt fil

tee - Leser fra standardinngang mens du skriver både til standardutgang og til de gitte filene

test - Sammenligner verdier og sjekker filtyper

timeout - Kjører en kommando med en tidsbegrensning

touch - Endrer tidsstemplene ved å angi tilgang og endringstid for de gitte filene til gjeldende klokkeslett; filer som ikke eksisterer, opprettes med null lengde

tr - Oversetter, klemmer og sletter de gitte tegnene fra standardinndata

true - Gjør ingenting, med hell; den kommer alltid ut med en statuskode som indikerer suksess

truncate - Krymper eller utvider en fil til den angitte størrelsen

tsort - Utfører en topologisk sortering; den skriver en fullstendig ordnet liste i henhold til den delvise bestillingen i en gitt fil

tty - Rapporterer filnavnet til terminalen koblet til standardinngang

uname - Rapporterer systeminformasjon

unexpand - Konverterer mellomrom til tabulator

uniq - Forkaster alle unntatt en av påfølgende identiske linjer

unlink - Sletter den gitte filen

users - Rapporterer navnene på brukerne som for øyeblikket er logget på

vdir - Er det samme som ls -l

wc - Rapporterer antall linjer, ord og byte for hver gitt fil, samt totale linjer når det er gitt mer enn en fil

who - Rapporterer hvem som er logget på

whoami - Rapporter brukernavnet tilknyttet den gjeldende effektive bruker-IDen

yes - Gjentatte ganger gir "y" eller en gitt streng til den drepes

libstdbuf - Bibliotek brukt av stdbuf

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.55. Check-0.14.0

Check er et rammeverk for C enhetstesting .

 

Omtrentlig byggetid: 0.1 SBU (ca. 3.5 SBU med tester)

Nødvendig diskplass: 13 MB

6.55.1. Installasjon av Check

Forbered Check for kompilering:

./configure --prefix=/usr

Bygg pakken:

make

Kompileringen er nå fullført. For å kjøre Check testpakke, utfør følgende kommando:

make check

Vær oppmerksom på at check testpakken kan ta relativt lang tid (opptil 4 SBU).

Installer pakken og fiks et skript:

make docdir=/usr/share/doc/check-0.14.0 install &&
sed -i '1 s/tools/usr/' /usr/bin/checkmk

6.55.2. Innholdet i Check

Installert program: checkmk

Installert bibliotek: libcheck.{a,so}

 

Kort beskrivelse

checkmk - Awk skript for å generere C enhetstester for bruk med Check enhetens testramme

libcheck.{a,so} - Inneholder funksjoner som gjør at Check kan kalles fra et testprogram

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.56. Diffutils-3.7

Diffutils pakken inneholder programmer som viser forskjellene mellom filer eller kataloger.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 36 MB

6.56.1. Installasjon av Diffutils

Forbered Diffutils for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

6.56.2. Innholdet i Diffutils

Installerte programmer: cmp, diff, diff3, and sdiff

 

Kort beskrivelse

cmp - Sammenligner to filer og rapporterer om eller i hvilke byte de er forskjellige

diff - Sammenligner to filer eller mapper og rapporterer hvilke linjer i filene som er forskjellige

diff3 - Sammenligner tre filer linje for linje

sdiff - Slår sammen to filer og gir resultatene interaktivt

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.57. Gawk-5.0.1

Gawk pakken inneholder programmer for å manipulere tekstfiler.

 

Omtrentlig byggetid: 0.4 SBU

Nødvendig diskplass: 47 MB

6.57.1. Installasjon av Gawk

Først må du forsikre deg om at noen unødvendige filer ikke blir installert:

sed -i 's/extras//' Makefile.in

Forbered Gawk for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

Installer dokumentasjonen om ønskelig:

mkdir -v /usr/share/doc/gawk-5.0.1
cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.0.1

6.57.2. Innholdet i Gawk

Installerte programmer: awk (lenker til gawk), gawk, og awk-5.0.1

Installerte biblioteker: filefuncs.so, fnmatch.so, fork.so, inplace.so, intdiv.so, ordchr.so, readdir.so, readfile.so, revoutput.so, revtwoway.so, rwarray.so, og time.so (alle i /usr/lib/gawk)

Installerte mapper: /usr/lib/gawk, /usr/libexec/awk, /usr/share/awk, og /usr/share/doc/gawk-5.0.1

 

Kort beskrivelse

awk - En lenke til gawk

gawk - Et program for å manipulere tekstfiler; det er GNU implementeringen av awk

gawk-5.0.1 - En hard lenke til gawk

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.58. Findutils-4.7.0

Findutils pakken inneholder programmer for å finne filer. Disse programmene blir gitt for å rekursivt søke gjennom et katalogtre og for å opprette, vedlikeholde og søke i en database (ofte raskere enn det rekursive funnet, men upålitelig hvis databasen ikke er oppdatert nylig).

 

Omtrentlig byggetid: 0.7 SBU

Nødvendig diskplass: 57 MB

6.58.1. Installasjon av Findutils

Forbered Findutils for kompilering:

./configure --prefix=/usr --localstatedir=/var/lib/locate

Betydningen av konfigurasjonsalternativet:

--localstatedir
   Dette alternativet endrer plasseringen av lokaliseringsdatabasen til å være i /var/lib/locate, som er FHS kompatibel.

Kompilere pakken:

make

For å teste resultatene:

make check

Det er kjent at to tester mislykkes i chroot miljøet: sv-bug-54171.old-O3 og sv-bug-54171.new-O3.

Installer pakken:

make install

Noen av skriptene i LFS Bootscripts pakken er avhengig av find. Ettersom /usr kanskje ikke er tilgjengelig i de tidlige stadiene av oppstart, må dette programmet være på root partisjonen. updatedb skriptet må også modifiseres for å rette en eksplisitt bane:

mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb

6.58.2. Innholdet i Findutils

Installerte programmer: find, locate, updatedb, og xargs

Installert mappe: /var/lib/locate

 

Kort beskrivelse

find - Søker i gitte mappetrær etter filer som samsvarer med de spesifiserte kriteriene

locate - Søker gjennom en database med filnavn og rapporterer navnene som inneholder en gitt streng eller samsvarer med et gitt mønster

updatedb - Oppdaterer locate databasen; den skanner hele filsystemet (inkludert andre filsystemer som for øyeblikket er montert, med mindre den får beskjed om å ikke gjøre det) og legger hvert filnavn den finner i databasen

xargs - Kan brukes til å anvende en gitt kommando på en liste over filer

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.59. Groff-1.22.4

Groff pakken inneholder programmer for behandling og formatering av tekst.

 

Omtrentlig byggetid: 0.5 SBU

Nødvendig diskplass: 95 MB

6.59.1. Installasjon av Groff

Groff forventer at miljøvariabelen PAGE inneholder standard papirstørrelse. For brukere i USA er PAGE=letter passende. Andre steder kan PAGE=A4 være mer passende. Mens standard papirstørrelse er konfigurert under kompileringen, kan den overstyres senere ved å gjengi enten "A4" eller "letter" til filen /etc/papersize.

Forbered Groff for kompilering:

PAGE=<paper_size> ./configure --prefix=/usr

Denne pakken støtter ikke parallellbygging. Kompilere pakken:

make -j1

Denne pakken kommer ikke med en testpakke.

Installer pakken:

make install

6.59.2. Innholdet i Groff

Installerte programmer: addftinfo, afmtodit, chem, eqn, eqn2graph, gdiffmk, glilypond, gperl, gpinyin, grap2graph, grn, grodvi, groff, groffer, grog, grolbp, grolj4, gropdf, grops, grotty, hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pdfmom, pdfroff, pfbtops, pic, pic2graph, post-grohtml, preconv, pre-grohtml, refer, roff2dvi, roff2html, roff2pdf, roff2ps, roff2text, roff2x, soelim, tbl, tfmtodit, og troff

Installerte mapper: /usr/lib/groff og /usr/share/doc/groff-1.22.4, /usr/share/groff

 

Kort beskrivelse

addftinfo - Leser en troff fontfil og legger til noen font-metrisk tilleggsinformasjon som brukes av groff systemet

afmtodit - Oppretter en fontfil for bruk med groff og grops

chem - Groff forbehandler for fremstilling av kjemiske strukturdiagrammer

eqn - Samler beskrivelser av ligninger innebygd i troff inndata til kommandoer som forstås av troff

eqn2graph - Konverterer en troff EQN (ligning) til et beskåret bilde

gdiffmk - Markerer forskjeller mellom groff/nroff/troff filer

glilypond - Transformerer notene som er skrevet på lilypond språket til groff språket

gperl - Forbehandler for groff, slik at perl kode blir lagt til i groff filer

gpinyin - Forbehandler for groff, slik at tillegg av kinesisk europeisk-lignende Pinyin til groff filer.

grap2graph - Konverterer et grapdiagram til et beskåret bitmapbilde

grn - En groff forbehandler for gremlin filer

grodvi - En driver for groff som produserer TeX dvi-format

groff - En frontend til groff dokumentformateringssystem; normalt kjører den troff programmet og en postprosessor som er passende for den valgte enheten

groffer - Viser groff-filer og man-sider på X- og tty-terminaler

grog - Leser filer og gjetter hvilke av groff alternativene -e, -man, -me, -mm, -ms, -p, -s og -t som er nødvendige for å skrive ut filer, og rapporterer groff kommandoen inkludert disse alternativene

grolbp - Er en groff driver for Canon CAPSL-skrivere (LBP-4 og LBP-8-seriens laserskrivere)

grolj4 - Er en driver for groff som produserer utdata i PCL5-format som passer for en HP LaserJet 4-skriver

gropdf - Oversetter utdataene fra GNU troff til PDF

grops - Oversetter utdataene fra GNU troff til PostScript

grotty - Oversetter utdataene fra GNU troff til en form som er egnet for skrivemaskinlignende enheter

hpftodit - Oppretter en fontfil for bruk med groff -Tjj4 fra en HP-merket fontmetrisk fil

indxbib - Oppretter en invertert indeks for bibliografiske databaser med en spesifisert fil for bruk med refer, lookbib og lkbib

lkbib - Søker i bibliografiske databaser etter referanser som inneholder spesifiserte nøkler og rapporterer alle referanser som er funnet

lookbib - Skriver ut en ledetekst på standardfeilen (med mindre standardinngangen ikke er en terminal), leser en linje som inneholder et sett med nøkkelord fra standardinngangen, søker i bibliografiske databaser i en spesifisert fil for referanser som inneholder disse nøkkelordene, skriver ut alle referanser funnet på standardutgangen, og gjentar denne prosessen til slutten av inngangen

mmroff - En enkel forbehandler for groff

neqn - Formater ligninger for American Standard Code for Information Interchange (ASCII) output

nroff - Et skript som emulerer nroff kommandoen ved hjelp av groff

pdfmom - Er en innpakning rundt groff som letter produksjonen av PDF-dokumenter fra filer formatert med mom makroer.

pdfroff - Oppretter pdf dokumenter ved hjelp av groff

pfbtops - Oversetter en PostScript-font i .pfb format til ASCII

pic - Kompilere beskrivelser av bilder innebygd i troff- eller TeX-inndatafiler til kommandoer forstått av TeX eller troff

pic2graph - Konverterer et PIC-diagram til et beskåret bilde

post-grohtml - Oversetter utdataene fra GNU troff til HTML

preconv - Konverterer koding av inndatafiler til noe GNU troff forstår

pre-grohtml - Oversetter utdataene fra GNU troff til HTML

refer - Kopierer innholdet i en fil til standardutgangen, bortsett fra at linjer mellom .[ and .] Blir tolket som siteringer, og linjer mellom .R1 og .R2 tolkes som kommandoer for hvordan siteringer skal behandles.

roff2dvi - Transformerer roff filer til DVI format

roff2html - Transformerer roff filer til HTML format

roff2pdf - Transformerer roff filer til PDF format

roff2ps - Transformerer roff filer til ps format

roff2text - Transformerer roff filer til tekst format

roff2x - Transformerer roff filer til andre formater

soelim - Leser filer og erstatter linjer i skjemaet .so-filen med innholdet i den nevnte filen

tbl - Kompilerer beskrivelser av tabeller som er innebygd i troff inndatafiler i kommandoer som forstås av troff

tfmtodit - Oppretter en fontfil for bruk med groff -Tdvi

troff - Er svært kompatibel med Unix troff; det skal vanligvis påberopes ved hjelp av kommandoen groff, som også kjører forbehandlere og etterbehandlere i riktig rekkefølge og med passende alternativer

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.60. GRUB-2.04

GRUB pakken inneholder GRand Unified Bootloader.

 

Omtrentlig byggetid: 0.8 SBU

Nødvendig diskplass: 161 MB

6.60.1. Installasjon av GRUB

Forbered GRUB for kompilering:

./configure --prefix=/usr \
                    --sbindir=/sbin \
                    --sysconfdir=/etc \
                    --disable-efiemu \
                    --disable-werror

Betydningen av det nye konfigurasjonsalternativet:

--disable-werror
   Dette gjør at byggingen kan fullføres med advarsler introdusert av nyere Flex versjoner.

--disable-efiemu
   Dette alternativet minimerer det som er bygget ved å deaktivere en funksjon og testprogrammer som ikke er nødvendige for LFS.

Kompilere pakken:

make

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make install
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions

Å bruke GRUB for å gjøre ditt LFS system oppstartbart vil bli diskutert i avsnitt 8.4, "Bruke GRUB til å sette opp startprosessen".

6.60.2. Innholdet i GRUB

Installerte programmer: grub-bios-setup, grub-editenv, grub-file, grub-fstest, grub-glue-efi, grub-install, grub-kbdcomp, grub-macbless, grub-menulst2cfg, grub-mkconfig, grub-mkimage, grub-mklayout, grub-mknetdir, grub-mkpasswd-pbkdf2, grub-mkrelpath, grub-mkrescue, grub-mkstandalone, grub-ofpathname, grub-probe, grub-reboot, grub-render-label, grub-script-check, grub-set-default, grub-sparc64-setup, og grub-syslinux2cfg

Installerte mapper: /usr/lib/grub, /etc/grub.d, /usr/share/grub, og /boot/grub (når grub-install kjøres første gangen)

 

Kort beskrivelse

grub-bios-setup - Er et hjelperprogram for grub-install

grub-editenv - Et verktøy for å redigere miljøblokken

grub-file - Sjekker om FILE er av den angitte typen.

grub-fstest - Verktøy for å feilsøke filsystemdriveren

grub-glue-efi - Behandler ia32 og amd64 EFI-bilder og limer dem i henhold til Apple format.

grub-install - Installer GRUB på stasjonen

grub-kbdcomp - Skript som konverterer en xkb-layout til en som er gjenkjent av GRUB

grub-macbless - Mac-stil bless på HFS- eller HFS+ -filer

grub-menulst2cfg - Konverterer en GRUB Legacy menu.lst til en grub.cfg for bruk med GRUB 2

grub-mkconfig - Generer en grub konfigurasjons fil

grub-mkimage - Lag et oppstartbart bilde av GRUB

grub-mklayout - Genererer en GRUB tastaturlayoutfil

grub-mknetdir - Forbereder en GRUB netboot mappe

grub-mkpasswd-pbkdf2 - Genererer et kryptert PBKDF2 passord for bruk i oppstartsmenyen

grub-mkrelpath - Oppretter et system stinavn i forhold til root

grub-mkrescue - Lag et oppstartbart bilde av GRUB som passer for en diskett eller CDROM/DVD

grub-mkstandalone - Genererer et frittstående bilde

grub-ofpathname - Er et hjelperprogram som skriver ut stien til en GRUB enhet

grub-probe - Søke enhetsinformasjon for en gitt sti eller enhet

grub-reboot - Angir standardoppstartoppføringen for GRUB, bare for neste oppstart

grub-render-label - Gjengi Apple .disk_label for Apple Mac

grub-script-check - Sjekker GRUB konfigurasjonsskript for syntaksfeil

grub-set-default - Angir standard oppstartsoppføring for GRUB

grub-sparc64-setup - Er et hjelperprogram for grub-setup

grub-syslinux2cfg - Transformer en syslinux konfigurasjonsfil til grub.cfg format

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.61. Less-551

Less pakken inneholder et visningsprogram for tekstfiler.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 4.1 MB

6.61.1. Installasjon av Less

Forbered Less for kompilering:

./configure --prefix=/usr --sysconfdir=/etc

Betydningen av konfigurasjonsalternativene:

--sysconfdir=/etc
   Dette alternativet forteller programmene som er laget av pakken, om å lete i /etc for konfigurasjonsfilene.

Kompilere pakken:

make

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make install

6.61.2. Innholdet i Less

Installerte programmer: less, lessecho, og lesskey

 

Kort beskrivelse

less - En filvisning eller søker; den viser innholdet i den gitte filen, lar brukeren bla, finne strenger og hoppe til merker

lessecho - Trengs for å utvide metategn, for eksempel * og ? , i filnavn på Unix-systemer

lesskey - Brukes til å spesifisere nøkkelbindinger for less

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.62. Gzip-1.10

Gzip pakken inneholder programmer for komprimering og dekomprimering av filer.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 20 MB

6.62.1. Installasjon av Gzip

Forbered Gzip for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Det er kjent at to tester mislykkes i LFS miljøet: help-version og zmore.

Installer pakken:

make install

Flytt et program som må være på root filsystemet:

mv -v /usr/bin/gzip /bin

6.62.2. Innholdet i Gzip

Installerte programmer: gunzip, gzexe, gzip, uncompress (hard link with gunzip), zcat, zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore, og znew

 

Kort beskrivelse

gunzip - Dekomprimerer gzipped filer

gzexe - Lager selvdekomprimerende kjørbare filer

gzip - Komprimerer de gitte filene ved å bruke Lempel-Ziv (LZ77) -koding

uncompress - Dekomprimerer komprimerte filer

zcat - Dekomprimerer de gzippede filene til standardutgang

zcmp - Kjører cmp på gzippede filer

zdiff - Kjører diff på gzippede filer

zegrep - Kjører egrep på gzippede filer

zfgrep - Kjører fgrep på gzippede filer

zforce - Tvinger en .gz-utvidelse på alle gitte filer som er gzippede filer, slik at gzip ikke komprimerer dem igjen; Dette kan være nyttig når filnavn ble avkortet under en filoverføring

zgrep - Kjører grep på gzippede filer

zless - Kjører less på gzippede filer

zmore - Kjører more på gzippede filer

znew - Rekomprimerer filer fra compress format til gzip format -.Z til .gz

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.63. Zstd-1.4.4

Zstandard er en sanntids komprimeringsalgoritme, som gir høye kompresjonsforhold. Den tilbyr et veldig bredt utvalg av komprimerings- / hastighetsutvekslinger, mens den støttes av en veldig rask dekoder.

 

Omtrentlig byggetid: 0.7 SBU

Nødvendig diskplass: 16 MB

6.63.1. Installasjon av Zstd

Kompilere pakken:

make

Denne pakken kommer ikke med en testsuite.

Installer pakken:

make prefix=/usr install

Fjern det statiske biblioteket og flytt det delte biblioteket til /lib. Også .so filen i /usr/lib må gjenskapes:

rm -v /usr/lib/libzstd.a
mv -v /usr/lib/libzstd.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libzstd.so) /usr/lib/libzstd.so

6.63.2. Innholdet i Zstd

Installerte programmer: zstd, zstdcat (link to zstd), zstdgrep, zstdless, zstdmt (link to zstd), and unzstd (link to zstd)

Installert bibliotek: libzstd.so

 

Kort beskrivelse

zstd - Komprimerer eller dekomprimerer filer ved å bruke ZSTD format

zstdgrep - Kjører grep på ZSTD komprimerte filer

zstdless - Kjører less på ZSTD komprimerte filer

libzstd - Biblioteket implementerer tapsfri datakomprimering ved bruk av ZSTD algoritmen

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.64. IPRoute2-5.5.0

IPRoute2 pakken inneholder programmer for grunnleggende og avansert IPV4 basert nettverk.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 14 MB

6.64.1. Installasjon av IPRoute2

Arpd programmet som er inkludert i denne pakken vil ikke bli bygget siden det er avhengig av Berkeley DB, som ikke er installert i LFS. Imidlertid vil en katalog for arpd og en man side fortsatt være installert. Forhindre dette ved å kjøre kommandoene nedenfor. Hvis arpd binæren er nødvendig, kan du finne instruksjoner for å kompilere Berkeley DB i BLFS boken på http://www.linuxfromscratch.org/blfs/view/9.1/server/databases.html#db.

sed -i /ARPD/d Makefile
rm -fv man/man8/arpd.8

Det er også nødvendig å deaktivere byggingen av to moduler som krever http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/iptables.html.

sed -i 's/.m_ipt.o//' tc/Makefile

Kompilere pakken:

make

Denne pakken har ikke en fungerende testserie.

Installer pakken:

make DOCDIR=/usr/share/doc/iproute2-5.5.0 install

6.64.2. Innholdet i IPRoute2

Installerte programmer: bridge, ctstat (lenker til lnstat), genl, ifcfg, ifstat, ip, lnstat, nstat, routef, routel, rtacct, rtmon, rtpr, rtstat (lenker til lnstat), ss, og tc

Installerte mapper: /etc/iproute2, /usr/lib/tc, og /usr/share/doc/iproute2-5.5.0,

 

Kort beskrivelse

bridge - Konfigurerer nettverksbroer

ctstat - Tilkoblingsstatusverktøy

genl - Generisk netlink verktøy frontend

ifcfg - Et shell skript wrapper for ip kommandoen [Merk at det krever arping og rdisk programmer fra iputils pakken som finnes på http://www.skbuff.net/iputils/.]

ifstat - Viser grensesnittstatistikken, inkludert mengden overførte og mottatte pakker fordelt etter grensesnitt

ip - Den viktigste kjørbare. Den har flere forskjellige funksjoner:

      ip link <enhet> lar brukere se på enhetenes tilstand og gjøre endringer

      ip addr lar brukere se på adresser og deres egenskaper, legge til nye adresser og slette gamle

      ip neighbor lar brukere se på nabobindinger og deres egenskaper, legge til nye nabooppføringer og slette gamle

      ip rule lar brukere se på rutingsretningslinjene og endre dem

      ip route lar brukere se på rutetabellen og endre regler for rutetabeller

      ip tunnel lar brukere se på IP-tunnelene og deres egenskaper, og endre dem

      ip maddr lar brukere se på multicast-adressene og deres egenskaper, og endre dem

      ip mroute lar brukere angi, endre eller slette multicast-rutingen

      ip monitorlar brukere kontinuerlig overvåke tilstanden til enheter, adresser og ruter

lnstat - Tilbyr Linux nettverksstatistikk; det er en generalisert og mer funksjonsfull erstatning for det gamle rtstat programmet

nstat - Viser nettverksstatistikk

routef - En komponent av ip route. Dette er for å spyle rutetabellene

routel - En komponent av ip route. Dette er for å liste rutetabellene

rtacct - Viser innholdet i /proc/net/rt_acct

rtmon - Ruteovervåkingsverktøy

rtpr - Konverterer output fra ip -o tilbake til en lesbar form

rtstat - Rutestatusverktøy

ss - Ligner på netstat kommandoen; viser aktive tilkoblinger

tc - Trafikkstyring kjørbar; dette er for implementering av Quality Of Service (QOS) og Class of Service (COS)

      tc qdisc lar brukere konfigurere kødisiplinen

      tc class lar brukere konfigurere klasser basert på planlegging av kø-disiplin

      tc estimator lar brukere estimere nettverksflyten inn i et nettverk

      tc filter lar brukere konfigurere QOS/COS pakkefiltrering

      tc policy lar brukere konfigurere QOS/COS reglene

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.65. Kbd-2.2.0

Kbd pakken inneholder nøkkelbordsfiler, konsollfonter og tastaturverktøy.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 36 MB

6.65.1. Installasjon av Kbd

Oppførselen til Backspace og Delete-tastene er ikke konsekvent på tvers av tastaturene i Kbd-pakken. Følgende oppdatering løser problemet for i386-tastaturer:

patch -Np1 -i ../kbd-2.2.0-backspace-1.patch

Etter lapping genererer Backspace-tasten tegnet med kode 127, og Delete-tasten genererer en kjent flukt-sekvens.

Fjern det overflødige resizecons programmet (det krever defunct svgalib for å gi videomodusfilene - for normal bruk setfont størrelser konsollen riktig) sammen med man siden.

sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in

Forbered Kbd for kompilering:

PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock

Betydningen av konfigurasjonsalternativene:

--disable-vlock
   Dette alternativet forhindrer at vlock verktøyet bygges, ettersom det krever PAM biblioteket, som ikke er tilgjengelig i chroot miljøet.

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

For noen språk (f.eks. Hviterussisk) gir ikke Kbd-pakken et nyttig tastaturoppsett der stock “by” tastaturet antar ISO-8859-5-kodingen, og CP1251 tastaturet brukes normalt. Brukere av slike språk må laste ned fungerende tastaturer separat.

Installer dokumentasjonen om ønskelig:

mkdir -v /usr/share/doc/kbd-2.2.0
cp -R -v docs/doc/* /usr/share/doc/kbd-2.2.0

6.65.2. Innholdet i Kbd

Installerte programmer: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, kbdinfo, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable (lenker til psfxtable), psfgettable (lenker til psfxtable), psfstriptable (lenker til psfxtable), psfxtable, setfont, setkeycodes, setleds, setmetamode, setvtrgb, showconsolefont, showkey, unicode_start, og unicode_stop

Installerte mapper: /usr/share/consolefonts, /usr/share/consoletrans, /usr/share/keymaps, /usr/share/doc/kbd-2.2.0, og /usr/share/unimaps

 

Kort beskrivelse

chvt - Endrer den virtuelle terminal i forgrunnen

deallocvt - Deallokerer ubrukte virtuelle terminaler

dumpkeys - Dumper tastaturets oversettelsestabeller

fgconsole - Skriver ut nummeret på den aktive virtuelle terminalen

getkeycodes - Skriver ut kartleggingstabellen for skanning av kjerner til nøkkelkoder

kbdinfo - Innhenter informasjon om statusen til en konsoll

kbd_mode - Rapporterer eller angir tastaturmodus

kbdrate - Angir tastaturets repetisjons- og forsinkelsesfrekvens

loadkeys - Laster tastaturets oversettelsestabeller

loadunimap - Laster inn kjernetabellen for unicode-to-font-kartlegging

mapscrn - Et foreldet program som pleide å laste inn en brukerdefinert kartleggingstabell for utdata tegn i konsolldriveren; dette er nå gjort av setfont

openvt - Starter et program på en ny virtuell terminal (VT)

psfaddtable - Legger til en Unicode-karaktertabell i en konsollfont

psfgettable - Trekker ut den innebygde Unicode-tegntabellen fra en konsollfont

psfstriptable - Fjerner den innebygde Unicode-tegntabellen fra en konsollfont

psfxtable - Håndterer Unicode-karaktertabeller for konsollskrifter

setfont - Endrer fonten Enhanced Graphic Adapter (EGA) og Video Graphics Array (VGA) på konsollen

setkeycodes - Laster inn kjerner scancode-to-keycode kartlegging tabelloppføringer; Dette er nyttig hvis det er uvanlige taster på tastaturet

setleds - Angir tastaturflaggene og lysemitterende dioder (LED)

setmetamode - Definerer metastasthåndtering av tastaturet

setvtrgb - Angir konsollfargekartet i alle virtuelle terminaler

showconsolefont - Viser gjeldende EGA/VGA-konsollskjermtype

showkey - Rapporterer scancodes, keycodes og ASCII-koder for tastene som er trykket på tastaturet

unicode_start - Setter tastaturet og konsollen i UNICODE-modus [Ikke bruk dette programmet med mindre tastaturfilen din er i ISO-8859-1-kodingen. For andre kodinger gir dette verktøyet feil resultater.]

unicode_stop - Slår tastatur og konsoll tilbake fra UNICODE-modus

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.66. Libpipeline-1.5.2

Libpipeline pakken inneholder et bibliotek for å manipulere kanaler til delprosesser på en fleksibel og praktisk måte.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 9.2 MB

6.66.1. Installasjon av Libpipeline

Forbered Libpipeline for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

6.66.2. Innholdet i Libpipeline

Installert bibliotek: libpipeline.so

 

Kort beskrivelse

libpipeline - Dette biblioteket brukes til å trygt konstruere kanaler mellom underprosesser

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.67. Make-4.3

Make pakken inneholder et program for å kompilere pakker.

 

Omtrentlig byggetid: 0.5 SBU

Nødvendig diskplass: 16 MB

6.67.1. Installasjon av Make

Forbered Make for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

Testserien trenger å vite hvor støttende perl-filer er plassert. Vi bruker en miljøvariabel for å oppnå dette. For å teste resultatene:

make PERL5LIB=$PWD/tests/ check

Installer pakken:

make install

6.67.2. Innholdet i Make

Installert program: make

 

Kort beskrivelse

make - Bestemmer automatisk hvilke deler av en pakke som må (re)kompileres, og deretter gir de relevante kommandoer

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.68. Patch-2.7.6

Patch pakken inneholder et program for å endre eller opprette filer ved å bruke en “patch” fil som vanligvis er opprettet av diff programmet.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 13 MB

6.68.1. Installasjon av Patch

Forbered Patch for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

6.68.2. Innholdet i Patch

Installert program: patch

 

Kort beskrivelse

patch - Endrer filer i henhold til en oppdateringsfil [En oppdateringsfil er vanligvis en forskjellliste opprettet med diff programmet. Ved å bruke disse forskjellene på de originale filene, oppretter patch de oppdaterte versjonene.]

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.69. Man-DB-2.9.0

Man-DB pakken inneholder programmer for å finne og vise man sider.

 

Omtrentlig byggetid: 0.5 SBU

Nødvendig diskplass: 40 MB

6.69.1. Installasjon av Man-DB

Forbered Man-DB for kompilering:

./configure --prefix=/usr \
                    --docdir=/usr/share/doc/man-db-2.9.0 \
                    --sysconfdir=/etc \
                    --disable-setuid \
                    --enable-cache-owner=bin \
                    --with-browser=/usr/bin/lynx \
                    --with-vgrind=/usr/bin/vgrind \
                    --with-grap=/usr/bin/grap \
                    --with-systemdtmpfilesdir= \
                    --with-systemdsystemunitdir=

Betydningen av konfigurasjonsalternativene:

--disable-setuid
   Dette deaktiverer å gjøre man programmet setuid til brukeren man.

--enable-cache-owner=bin
   Dette gjør at de hele systemets cache filer eies av bruker bin.

--with-...
   Disse tre parameterne brukes til å sette noen standardprogrammer. lynx er en tekstbasert nettleser (se BLFS for installasjonsinstruksjoner), vgrind konverterer programkilder til Groff inndata, og grap er nyttig for å sette grafer i Groff dokumenter. Vgrind og grap programmene er vanligvis ikke nødvendig for å vise man sider. De er ikke en del av LFS eller BLFS, men du bør kunne installere dem selv etter å ha fullført LFS hvis du ønsker å gjøre det.

--with-systemd...
   Disse parametrene forhindrer installering av unødvendige systemd mapper og filer.

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

6.69.2. Non-English Manual Pages in LFS

Tabellen nedenfor viser tegnsettet som Man-DB antar at manuelle sider installert under /usr/share/man/<ll> vil bli kodet med. I tillegg til dette bestemmer Man-DB om manuelle sider installert i den katalogen er UTF-8-kodet.

Tabell 6.1. Forventet karakterkoding av gamle 8-biters manuelle sider
Språk (kode) Koding Språk (kode) Koding
Dansk (da) ISO-8859-1 Kroatisk (hr) ISO-8859-2
Tysk (de) ISO-8859-1 Ungarsk (hu) ISO-8859-2
Engelsk (en) ISO-8859-1 Japansk (ja) EUC-JP
Spansk (er) ISO-8859-1 Koreansk (ko) EUC-JP
Estisk (et) ISO-8859-1 Litauisk (lt) ISO-8859-13
Finsk (fi) ISO-8859-1 Latvisk (lv) ISO-8859-13
Fransk (fr) ISO-8859-1 Makedonsk (mk) ISO-8859-5
Irsk (ga) ISO-8859-1 Polsk (pl) ISO-8859-2
Galisisk (gl) ISO-8859-1 Rumensk (ro) ISO-8859-2
Indonesisk (id) ISO-8859-1 Russisk (ru) KOI8-R
Islandsk (er) ISO-8859-1 Slovakisk (sk) ISO-8859-2
Italiensk (it) ISO-8859-1 Slovensk (sl) ISO-8859-2
Norsk Bokmål (nb) ISO-8859-1 Serbisk latin (sr@latin) ISO-8859-2
Nederlandsk (nl) ISO-8859-1 Serbisk (sr) ISO-8859-5
Norsk nynorsk (nn) ISO-8859-1 Tyrkisk (tr) ISO-8859-9
Norsk (no) ISO-8859-1 Ukrainsk (uk) KOI8-U
Portugisisk (pt) ISO-8859-1 Vietnamesisk (vi) TCVN5712-1
Svensk (sv) ISO-8859-1 Forenklet kinesisk (zh_CN) GBK
Hviterussisk (be) CP1251 Forenklet kinesisk, Singapore (zh_SG) GBK
Bulgarsk (bg) CP1251 Tradisjonell kinesisk, Hong Kong (zh_HK) BIG5HKSCS
Tsjekkisk (cs) ISO-8859-2 Tradisjonell kinesisk (zh_TW) BIG5
Gresk (el) ISO-8859-7    

Manualsider på språk som ikke er i listen støttes ikke.

6.69.3. Innholdet i Man-DB

Installerte programmer: accessdb, apropos (lenker til whatis), catman, lexgrog, man, mandb, manpath, og whatis

Installerte biblioteker: libman.so and libmandb.so (begge i /usr/lib/man-db)

Installerte mapper: /usr/lib/man-db, /usr/libexec/man-db, og /usr/share/doc/man-db-2.9.0

 

Kort beskrivelse

accessdb - Dumper whatis databaseinnholdet i menneskelig lesbar form

apropos - Søker i whatis databasen og viser de korte beskrivelsene av systemkommandoer som inneholder en gitt streng

catman - Oppretter eller oppdaterer de forhåndsformaterte manualsidene

lexgrog - Viser enlinjes sammendragsinformasjon om en gitt manuell side

man - Formaterer og viser den ønskede manualsiden

mandb - Oppretter eller oppdaterer whatis databasen

manpath - Viser innholdet i $MANPATH eller (hvis $MANPATH ikke er angitt) en passende søkebane basert på innstillingene i man.conf og brukerens miljø

whatis - Søker i whatis databasen og viser de korte beskrivelsene av systemkommandoer som inneholder det gitte nøkkelordet som et eget ord

libman - Inneholder kjøretidsstøtte for man

libmandb - Inneholder kjøretidsstøtte for man

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.70. Tar-1.32

Tar pakken inneholder et arkiveringsprogram.

 

Omtrentlig byggetid: 2.0 SBU

Nødvendig diskplass: 45 MB

6.70.1. Installasjon av Tar

Forbered Tar for kompilering:

FORCE_UNSAFE_CONFIGURE=1 \
./configure --prefix=/usr \
                    --bindir=/bin

Betydningen av konfigurasjonsalternativet:

FORCE_UNSAFE_CONFIGURE=1
   Dette tvinger testen mknod å kjøres som root. Det anses generelt å være farlig å kjøre denne testen som root bruker, men da den kjøres på et system som bare er delvis bygget, er det OK å overstyre den.

Kompilere pakken:

make

For å teste resultatene (ca. 3 SBU):

make check

Installer pakken:

make install
make -C doc install-html docdir=/usr/share/doc/tar-1.32

6.70.2. Innholdet i Tar

Installert program: tar

Installert mappe: /usr/share/doc/tar-1.32

 

Kort beskrivelse

tar - Oppretter, trekker ut filer fra og lister innholdet i arkiver, også kjent som tarballer

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.71. Texinfo-6.7

Texinfo pakken inneholder programmer for lesing, skriving og konvertering av infosider.

 

Omtrentlig byggetid: 0.7 SBU

Nødvendig diskplass: 116 MB

6.71.1. Installasjon av Texinfo

Forbered Texinfo for kompilering:

./configure --prefix=/usr --disable-static

Betydningen av konfigurasjonsalternativet:

--disable-static
   I dette tilfellet vil konfigurasjonsskriptet på toppnivå klage over at dette er et ukjent alternativ, men konfigureringsskriptet for XSParagraph gjenkjenner det og bruker det til å deaktivere installasjon av et statisk XSParagraph.a til /usr/lib/texinfo.

Kompilere pakken:

make

For å teste resultatene:

make check

Installer pakken:

make install

Eventuelt kan du installere komponentene som tilhører en TeX installasjon:

make TEXMF=/usr/share/texmf install-tex

Betydningen av make parameteren:

TEXMF=/usr/share/texmf
   TEXMF makefile variabelen inneholder plasseringen til roten til TeX treet hvis for eksempel en TeX pakke blir installert senere.

Info dokumentasjonssystemet bruker en ren tekstfil til å holde listen over menyoppføringer. Filen ligger på /usr/share/info/dir. Dessverre, på grunn av sporadiske problemer i Makefiles av forskjellige pakker, kan det noen ganger komme ut av synkronisering med infosidene som er installert på systemet. Hvis /usr/share/info/dir filen noen gang må gjenopprettes, vil følgende valgfrie kommandoer utføre oppgaven:

pushd /usr/share/info
rm -v dir
for f in *
  do install-info $f dir 2>/dev/null
done
popd

6.71.2. Innholdet i Texinfo

Installerte programmer: info, install-info, makeinfo (lenker til texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi, texi2pdf, og texindex

Installerte biblioteker: MiscXS.so, Parsetexi.so, og XSParagraph.so (alle i /usr/lib/texinfo)

Installerte mapper: /usr/share/texinfo og /usr/lib/texinfo

 

Kort beskrivelse

info - Brukes til å lese informasjonssider som ligner på man sider, men ofte går mye dypere enn bare å forklare alle tilgjengelige kommandolinjealternativer [Sammenlign for eksempel man bison og info bison.]

install-info - Brukes til å installere infosider; den oppdaterer oppføringer i info indeksfilen

makeinfo - Oversetter gitte Texinfo kildedokumenter til infosider, ren tekst eller HTML

pdftexi2dvi - Brukes til å formatere det gitte Texinfo dokumentet i en Portable Document Format (PDF) fil

pod2texi - Konverterer Pod til Texinfo format

texi2any - Oversett Texinfo kildedokumentasjon til forskjellige andre formater

texi2dvi - Brukes til å formatere det gitte Texinfo dokumentet i en enhetsuavhengig fil som kan skrives ut

texi2pdf - Brukes til å formatere det gitte Texinfo dokumentet i en Portable Document Format (PDF) fil

texindex - Brukes til å sortere Texinfo indeksfiler

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.72. Vim-8.2.0190

Vim pakken inneholder en kraftig tekstredigerer.

 

Omtrentlig byggetid: 1.7 SBU

Nødvendig diskplass: 202 MB

 

Alternatives to Vim
Hvis du foretrekker et annen tekstprogram - som Emacs, Joe eller Nano - kan du se http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/editors.html for å få foreslåtte installasjonsinstruksjoner.

6.72.1. Installasjon av Vim

Først må du endre standardplasseringen til vimrc konfigurasjonsfilen til /etc:

echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h

Forbered Vim for kompilering:

./configure --prefix=/usr

Kompilere pakken:

make

For å forberede testene må du sørge for at brukeren nobody kan skrive til kildetreet:

chown -Rv nobody .

Kjør nå testene som nobody brukeren:

su nobody -s /bin/bash -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log

Testpakken sender ut mange binære data til skjermen. Dette kan forårsake problemer med innstillingene til den nåværende terminalen. Problemet kan unngås ved å omdirigere utdataene til en loggfil som vist ovenfor. En vellykket test vil resultere i ordene "ALL DONE" i loggfilen når den er ferdig.

Installer pakken:

make install

Mange brukere er vant til å bruke vi i stedet for vim. For å tillate kjøring av vim når brukere vanligvis går inn på vi, oppretter du en symlink for både binær og man siden på de angitte språkene:

ln -sv vim /usr/bin/vi
for L in /usr/share/man/{,*/}man1/vim.1; do
      ln -sv vim.1 $(dirname $L)/vi.1
done

Som standard er Vims dokumentasjon installert i /usr/share/vim. Følgende symlink gir deg tilgang til dokumentasjonen via /usr/share/doc/vim-8.2.0190, noe som gjør den i samsvar med plasseringen av dokumentasjon for andre pakker:

ln -sv ../vim/vim82/doc /usr/share/doc/vim-8.2.0190

Hvis et X Window System skal installeres på LFS-systemet, kan det være nødvendig å kompilere Vim på nytt etter installasjon av X. Vim leveres med en GUI-versjon av redigeringsprogrammet som krever X og noen ekstra biblioteker som skal installeres. For mer informasjon om denne prosessen, se Vim-dokumentasjonen og Vim-installasjonssiden i BLFS-boken på http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/vim.html.

6.72.2. Konfigurere Vim

Som standard kjører vim i vi inkompatibel modus. Dette kan være nytt for brukere som har brukt andre tekstredigere tidligere. Innstillingen "nocompatible" er inkludert nedenfor for å markere det faktum at en ny oppførsel blir brukt. Det minner også de som vil bytte til "compatible"  modus om at det skal være den første innstillingen i konfigurasjonsfilen. Dette er nødvendig fordi det endrer andre innstillinger, og overstyringer må komme etter denne innstillingen. Opprett en standard vim konfigurasjonsfil ved å kjøre følgende:

cat > /etc/vimrc << "EOF"

" Begin /etc/vimrc

 

" Ensure defaults are set before customizing settings, not after
source $VIMRUNTIME/defaults.vim
let skip_defaults_vim=1

 

set nocompatible
set backspace=2
set mouse=
syntax on
if (&term == "xterm") || (&term == "putty")
    set background=dark
endif

 

" End /etc/vimrc
EOF

Den angitte set nocompatible innstillingen gjør at vim oppfører seg på en mer nyttig måte (standard) enn den vi kompatible måten. Fjern “no” for å beholde den gamle vi oppførselen. set backspace=2-innstillingen tillater backspacing over linjeskift, autoindents og begynnelsen av innsettingen. Parameteren syntaks on aktiverer vims syntaksutheving. set mouse= innstillingen muliggjør riktig liming av tekst med musen når du arbeider i chroot eller over en ekstern tilkobling. Til slutt korrigerer if setningen med den angitte set background=dark innstilling vims gjetning om bakgrunnsfargen til noen terminalemulatorer. Dette gir fremhevingen et bedre fargevalg for bruk på den svarte bakgrunnen til disse programmene.

Dokumentasjon for andre tilgjengelige alternativer kan fås ved å kjøre følgende kommando:

vim -c ':options'

Som standard installerer Vim bare stavekontrollfiler for det engelske språket. For å installere stavekontrollfiler for det foretrukne språket ditt, last ned *.spl og eventuelt *.sug filene for språket ditt og tegnkodingen fra ftp://ftp.vim.org/pub/vim/runtime/spell/ og lagre dem til /usr/share/vim/vim82/spell/.

For å bruke disse stavefilene er det nødvendig med en viss konfigurasjon i / etc / vimrc, for eksempel:

set spelllang=en,ru
set spell

For mer informasjon, se den aktuelle README filen på nettadressen ovenfor.

6.72.3. Innholdet i Vim

Installerte programmer: ex (lenker til vim), rview (lenker til vim), rvim (lenker til vim), vi (lenker til vim), view (lenker til vim), vim, vimdiff (lenker til vim), vimtutor, og xxd

Installert mappe: /usr/share/vim

 

Kort beskrivelse

ex - Starter vim i ex modus

rview - Er en begrenset versjon av view; ingen skallkommandoer kan startes og view kan ikke suspenderes

rvim - Er en begrenset versjon av vim; ingen skallkommandoer kan startes og vim kan ikke suspenderes

vi - Lenke til vim

view - Starter vim i skrivebeskyttet modus

vim - Er tekstredigereren

vimdiff - Redigerer to eller tre versjoner av en fil med vim og viser forskjeller

vimtutor - Lærer de grunnleggende tastene og kommandoene til vim

xxd - Oppretter en hex dumping av den gitte filen; det kan også gjøre omvendt, så det kan brukes til binær endring

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.73. Procps-ng-3.3.15

Procps-ng pakken inneholder programmer for overvåking av prosesser.

 

Omtrentlig byggetid: 0.1 SBU

Nødvendig diskplass: 17 MB

6.73.1. Installasjon av Procps-ng

Forbered Procps-ng for kompilering:

./configure --prefix=/usr \
                    --exec-prefix= \
                    --libdir=/usr/lib \
                    --docdir=/usr/share/doc/procps-ng-3.3.15 \
                    --disable-static \
                    --disable-kill

Betydningen av konfigurasjonsalternativene:

--disable-kill
   Denne bryteren deaktiverer bygging av kill kommandoen som vil bli installert av Util-linux pakken.

Kompilere pakken:

make

Testpakken trenger noen tilpassede modifikasjoner for LFS. Fjern en test som mislykkes når skripting ikke bruker en tty-enhet, og fikse to andre. For å kjøre testpakken, kjør følgende kommandoer:

sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
rm testsuite/pgrep.test/pgrep.exp
make check

Installer pakken:

make install

Til slutt, flytt viktige biblioteker til et sted som kan bli funnet hvis /usr ikke er montert.

mv -v /usr/lib/libprocps.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so

6.73.2. Innholdet i Procps-ng

Installerte programmer: free, pgrep, pidof, pkill, pmap, ps, pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w, og watch

Installert bibliotek: libprocps.so

Installerte mapper: /usr/include/proc og /usr/share/doc/procps-ng-3.3.15

 

Kort beskrivelse

free - Rapporterer hvor mye ledig og brukt minne (både fysisk og vekselminne) i systemet

pgrep - Slår opp prosesser basert på navn og andre attributter

pidof - Rapporterer PID for de gitte programmene

pkill - Signalprosesser basert på navn og andre attributter

pmap - Rapporterer minnekartet for den gitte prosessen

ps - Viser gjeldende prosesser som kjører

pwdx - Rapporterer gjeldende arbeidsmappe for en prosess

slabtop - Viser detaljert informasjon om hurtigbuffer fra kernel slab i sanntid

sysctl - Endrer kjerneparametere på kjøretid

tload - Skriver ut en graf over gjeldende gjennomsnitt for systembelastning

top - Viser en liste over de mest CPU intensive prosessene; det gir en kontinuerlig titt på prosessoraktivitet i sanntid

uptime - Rapporterer hvor lenge systemet har kjørt, hvor mange brukere som er pålogget og gjennomsnittet av systembelastningen

vmstat - Rapporterer virtuell minnestatistikk, gir informasjon om prosesser, minne, minnehåndtering, blokk Inndata/Utdata (IO), unntak eller en feil og CPU-aktivitet

w - Viser hvilke brukere som for øyeblikket er pålogget, hvor og siden når

watch - Kjører en gitt kommando gjentatte ganger og viser den første skjermen full av utdataene; Dette gjør det mulig for en bruker å se utdataendring over tid

libprocps - Inneholder funksjonene som brukes av de fleste programmer i denne pakken

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.74. Util-linux-2.35.1

Util-linux pakken inneholder diverse verktøy. Blant dem er verktøy for håndtering av filsystemer, konsoller, partisjoner og meldinger.

 

Omtrentlig byggetid: 1.1 SBU

Nødvendig diskplass: 289 MB

6.74.1. Merknader om FHS samsvar

FHS anbefaler å bruke katalogen /var/lib/hwclock i stedet for den vanlige /etc katalogen som sted for adjtime filen. Opprett først en katalog for å aktivere lagring av hwclock programmet:

mkdir -pv /var/lib/hwclock

6.74.2. Installasjon av Util-linux

Forbered Util-linux for kompilering:

./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
                     --docdir=/usr/share/doc/util-linux-2.35.1 \
                     --disable-chfn-chsh \
                     --disable-login \
                     --disable-nologin \
                     --disable-su \
                     --disable-setpriv \
                     --disable-runuser \
                     --disable-pylibmount \
                     --disable-static \
                     --without-python \
                     --without-systemd \
                     --without-systemdsystemunitdir

Alternativene --disable og -without hindrer advarsler om å bygge komponenter som krever pakker som ikke er i LFS eller som ikke er i samsvar med programmer installert av andre pakker.

Kompilere pakken:

make

Hvis ønskelig, kjør testpakken som en annen enn root bruker:

Å kjøre testpakken som rotbruker kan være skadelig for systemet ditt. For å kjøre den, må alternativet CONFIG_SCSI_DEBUG for kjernen være tilgjengelig i det nåværende systemet og må bygges som en modul. Å bygge den inn i kjernen forhindrer oppstart. For fullstendig dekning må andre BLFS pakker være installert. Hvis ønskelig kan denne testen kjøres etter omstart til det fullførte LFS-systemet:

bash tests/run.sh --srcdir=$PWD --builddir=$PWD

chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check"

Installer pakken:

make install

6.74.3. Innholdet i Util-linux

Installerte programmer: addpart, agetty, blkdiscard, blkid, blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, column, ctrlaltdel, delpart, dmesg, eject, fallocate, fdformat, fdisk, fincore, findfs, findmnt, flock, fsck, fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hexdump, hwclock, i386, ionice, ipcmk, ipcrm, ipcs, isosize, kill, last, lastb (link to last), ldattach, linux32, linux64, logger, look, losetup, lsblk, lscpu, lsipc, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, namei, nsenter, partx, pivot_root, prlimit, raw, readprofile, rename, renice, resizepart, rev, rfkill, rtcwake, script, scriptreplay, setarch, setsid, setterm, sfdisk, sulogin, swaplabel, swapoff (link to swapon), swapon, switch_root, taskset, ul, umount, uname26, unshare, utmpdump, uuidd, uuidgen, uuidparse, wall, wdctl, whereis, wipefs, x86_64, og zramctl

Installerte biblioteker: libblkid.so, libfdisk.so, libmount.so, libsmartcols.so, and libuuid.so

Installerte mapper: /usr/include/blkid, /usr/include/libfdisk, /usr/include/libmount, /usr/include/libsmartcols, /usr/include/uuid, /usr/share/doc/util-linux-2.35.1, og /var/lib/hwclock

 

Kort beskrivelse

addpart - Informerer Linuxkjernen om nye partisjoner

agetty - Åpner en tty port, ber om et påloggingsnavn og påkaller deretter login programmet

blkdiscard - Forkaster sektorer på en enhet

blkid - Et kommandolinjeverktøy for å lokalisere og skrive ut blokkenhets attributter

blkzone - Kjører sonekommando på den gitte blokkenheten

blockdev - Tillater brukere å kalle blokkenheters ioctls fra kommandolinjen

cal - Viser en enkel kalender

cfdisk - Manipulerer partisjonstabellen til den gitte enheten

chcpu - Endrer tilstanden til CPUer

chmem - Konfigurerer minne

choom - Viser og justerer OOM-killer utfall

chrt - Manipulerer sanntidsattributter for en prosess

col - Filtrerer ut omvendt linjemating

colcrt - Filtrerer nroff utgang for terminaler som mangler noen funksjoner, for eksempel overstreking og halvlinjer

colrm - Filtrerer de gitte kolonnene

column - Formaterer en gitt fil i flere kolonner

ctrlaltdel - Stiller funksjonen til Ctrl+Alt+Del tastekombinasjonen til en hard eller en myk tilbakestilling

delpart - Ber Linux kjernen om å fjerne en partisjon

dmesg - Dumper kjernestartmeldingene

eject - Løs ut flyttbare medier

fallocate - Forhåndsallokerer plass til en fil

fdformat - Formaterer en diskett på lavt nivå

fdisk - Manipulerer partisjonstabellen til den gitte enheten

fincore - Teller sider med filinnholdet i kjernen

findfs - Finner et filsystem etter etikett eller UUID (Universally Unique Identifier)

findmnt - Er et kommandolinjegrensesnitt til libmount biblioteket for arbeid med mountinfo, fstab og mtab filer

flock - Setter en fillås og utfører deretter en kommando med låsen holdt på

fsck - Brukes til å kontrollere, og eventuelt reparere, filsystemer

fsck.cramfs - Utfører en konsistenskontroll på Cramfs filsystemet på den gitte enheten

fsck.minix - Utfører en konsistenskontroll på Minix filsystemet på den gitte enheten

fsfreeze - Er en veldig enkel innpakning rundt FIFREEZE/FITHAW ioctl kernel driveroperasjoner

fstrim - Kasserer ubrukte blokker på et montert filsystem

getopt - Analyserer alternativer i den gitte kommandolinjen

hexdump - Dumper den gitte filen i heksadesimal eller i et annet gitt format

hwclock - Leser eller stiller inn systemets maskinvareklokke, også kalt Real-Time Clock (RTC) eller Basic Input-Output System (BIOS) Clock.

i386 - En symbolsk lenke til setarch

ionice - Henter eller setter io planleggingsklasse og prioritet for et program

ipcmk - Oppretter forskjellige IPC ressurser

ipcrm - Fjerner den gitte IPC ressursen (Inter-Process Communication)

ipcs - Gir IPC statusinformasjon

isosize - Rapporterer størrelsen på et ISO9660-filsystem

kill - Sender signaler til prosesser

last - Viser hvilke brukere sist logget inn (og ut), og søker tilbake gjennom /var/log/wtmp filen; det viser også systemoppstart, systemavslutning og endringer på kjørenivå

lastb - Viser de mislykkede påloggingsforsøkene, som logget i /var/log/btmp

ldattach - Fester en linjedisiplin til en seriellinje

linux32 - En symbolsk lenke til setarch

linux64 - En symbolsk lenke til setarch

logger - Legger inn den gitte meldingen i systemloggen

look - Viser linjer som begynner med den gitte strengen

losetup - Setter opp og kontrollerer sløyfeenheter

lsblk - Viser informasjon om alle eller utvalgte blokkenheter i et trelignende format

lscpu - Skriver ut CPU arkitekturinformasjon

lsipc - Skriver ut informasjon om IPC fasiliteter som for tiden er brukt i systemet

lslocks - Viser lokale systemlåser

lslogins - Viser informasjon om brukere, grupper og systemkontoer

lsmem - Viser utvalg av tilgjengelig minne med deres tilkoblede status

lsns - Viser navnerom

mcookie - Genererer magiske informasjonskapsler (128-bit tilfeldige heksadesimale tall) for xauth

mesg - Kontrollerer om andre brukere kan sende meldinger til den nåværende brukerens terminal

mkfs - Bygger et filsystem på en enhet (vanligvis en harddiskpartisjon)

mkfs.bfs - Oppretter et Santa Cruz Operations (SCO) bfs filsystem

mkfs.cramfs - Oppretter et cramfs filsystem

mkfs.minix - Oppretter et Minix filsystem

mkswap - Initialiserer den gitte enheten eller filen som skal brukes som vekselfil

more - Et filter for å bla gjennom tekst en skjerm om gangen

mount - Fester filsystemet på den gitte enheten til en spesifisert katalog i filsystemtreet

mountpoint - Sjekker om mappen er et monteringspunkt

namei - Viser de symbolske koblingene i de angitte stinavnene

nsenter - Kjører et program med navnerom for andre prosesser

partx - Forteller kjernen om tilstedeværelse og nummerering av diskpartisjoner

pivot_root - Gjør det gitte filsystemet til det nye rotfilsystemet for den nåværende prosessen

prlimit - Hent og angi prosessressursgrenser

raw - Bind en Linux rå karakterenhet til en blokkeringsenhet

readprofile - Leser informasjon om kjerneprofilering

rename - Endrer navn på de gitte filene, og erstatter en gitt streng med en annen

renice - Endrer prioriteten til prosesser som kjøres

resizepart - Ber Linux kjernen om å endre størrelse på en partisjon

rev - Vender linjene i en gitt fil

rkfill - Verktøy for aktivering og deaktivering av trådløse enheter

rtcwake - Brukes til å angi hvilemodus til systemet til spesifisert vekketid

script - Lager en typeskript av en terminalsession

scriptreplay - Spiller av typeskripter ved hjelp av tidsinformasjon

setarch - Endrer rapportert arkitektur i et nytt programmiljø og setter personlighetsflagg

setsid - Kjører det gitte programmet i en ny økt

setterm - Angir terminalattributter

sfdisk - En diskpartisjonstabellmanipulator

sulogin - Lar root logge på; det blir normalt påkalt av init når systemet går i enkeltbrukermodus

swaplabel - Gjør det mulig å endre UUID og etikett for vekselfil

swapoff - Deaktiver enheter og filer for sideveksling og vekselminne

swapon - Aktiverer enheter og filer for sideveksling og vekselminne, og viser en liste over enhetene og filene som er i bruk

switch_root - Bytter til et annet filsystem som roten til monteringstreet

tailf - Sporer veksten av en loggfil; viser de siste 10 linjene i en loggfil, og fortsetter deretter å vise eventuelle nye oppføringer i loggfilen mens de opprettes

taskset - Henter eller setter prosessens CPU tilhørighet

ul - Et filter for å oversette understrekninger til rømningssekvenser som indikerer understreking for terminalen i bruk

umount - Kobler fra et filsystem fra systemets filstruktur

uname26 - En symbolsk lenke til setarch

unshare - Kjører et program med noen navneområder som ikke er delt av foreldrene

utmpdump - Viser innholdet i den gitte påloggingsfilen i et mer brukervennlig format

uuidd - En nisse (daemon) brukt av UUID biblioteket til å generere tidsbaserte UUIDer på en sikker og garantert unik måte

uuidgen - Oppretter nye UUIDer. Hver nye UUID kan med rimelighet betraktes som unik blant alle UUIDer opprettet, på det lokale systemet og på andre systemer, i fortiden og i fremtiden

uuidparse - Et verktøy for å analysere unike identifikatorer

wall - Viser innholdet i en fil eller, som standard, standardinngangen, på terminalene til alle påloggede brukere

wdctl - Viser status for maskinvarevakt

whereis - Rapporterer plasseringen til binær, kilde og man siden for den gitte kommandoen

wipefs - Fjerner en filsystemsignatur fra en enhet

x86_64 - En symbolsk lenke til setarch

zramctl - Et program for å sette opp og kontrollere zram (komprimert minnedisk) enheter

libblkid - Inneholder rutiner for enhetsidentifikasjon og symbolutvinning

libfdisk - Inneholder rutiner for å manipulere partisjonstabeller

libmount - Inneholder rutiner for montering og avmontering av blokkenheter

libsmartcols - Inneholder rutiner for å hjelpe skjermutdata i tabellform

libuuid - Inneholder rutiner for å generere unike identifikatorer for objekter som kan være tilgjengelige utenfor det lokale systemet

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.75. E2fsprogs-1.45.5

E2fsprogs pakken inneholder verktøy for håndtering av ext2 filsystemet. Den støtter også filsystemene ext3 og ext4 journalførings systemer.

 

Omtrentlig byggetid: 1.6 SBU

Nødvendig diskplass: 108 MB

6.75.1. Installasjon av E2fsprogs

E2fsprogs dokumentasjonen anbefaler at pakken bygges i en underkatalog til kildetreet:

mkdir -v build
cd build

Forbered E2fsprogs for kompilering:

../configure --prefix=/usr \
                     --bindir=/bin \
                     --with-root-prefix="" \
                     --enable-elf-shlibs \
                     --disable-libblkid \
                     --disable-libuuid \
                     --disable-uuidd \
                     --disable-fsck

Betydningen av miljøvariabelen og konfigurasjonsalternativene:

--with-root-prefix="" og --bindir=/bin
   Enkelte programmer (for eksempel e2fsck programmet) regnes som viktige programmer. Når /usr ikke er montert, må disse programmene fremdeles være tilgjengelige. De hører hjemme i mapper som /lib og /sbin. Hvis dette alternativet ikke sendes til E2fsprogs konfigurasjon, installeres programmene i /usr mappen.

--enable-elf-shlibs
   Dette skaper delte biblioteker som noen programmer i denne pakken bruker.

--disable-*
   Dette forhindrer E2fsprogs i å bygge og installere libuuid og libblkid bibliotekene, uuidd nissen og fsck innpakning, ettersom Util-Linux installerer nyere versjoner.

Kompilere pakken:

make

For å kjøre testene, utfør:

make check

En av E2fsprogs-testene vil forsøke å tildele 256 MB minne. Hvis du ikke har vesentlig mer minne enn dette, må du sørge for å aktivere en stor nok vekselfil for testen. Se Avsnitt 2.5, “Opprette et filsystem på partisjonen” og Avsnitt 2.7, “Montere den nye partisjonen” for detaljer om hvordan du oppretter og aktiverer en vekselfil.

Installer pakken:

make install

Gjør de installerte statiske bibliotekene skrivbare, slik at feilsøkingssymboler kan fjernes senere:

chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a

Denne pakken installerer en gzipped .info fil, men oppdaterer ikke den systemomfattende dir filen. Pakk ut denne filen og oppdater deretter system dir filen ved hjelp av følgende kommandoer:

gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info

Hvis ønskelig, opprett og installer ytterligere dokumentasjon ved å utstede følgende kommandoer:

makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info

6.75.2. Innholdet i E2fsprogs

Installerte programmer: badblocks, chattr, compile_et, debugfs, dumpe2fs,e2freefrag, e2fsck, e2image, e2label, e2mmpstatus, e2scrub, e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mklost+found, resize2fs, og tune2fs

Installerte biblioteker: libcom_err.so, libe2p.so, libext2fs.so, og libss.so

Installert mappe: /usr/include/e2p, /usr/include/et, /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, /usr/share/et, og /usr/share/ss

 

Kort beskrivelse

badblocks - Søker en enhet (vanligvis en diskpartisjon) etter dårlige blokker

chattr - Endrer attributtene til filer på et ext2 filsystem; det endrer også ext3 filsystemer, journalversjonen av ext2 filsystemer

compile_et - En feiltabell kompilator; den konverterer en tabell med feilkodenavn og meldinger til en C kildefil som er egnet for bruk med com_err biblioteket

debugfs - En feilsøking for filsystem; den kan brukes til å undersøke og endre tilstanden til et ext2 filsystem

dumpe2fs - Skriver ut superblokken og blokkenes gruppeinformasjon for filsystemet som er tilstede på en gitt enhet

e2freefrag - Rapporterer informasjon om fragmentering av ledig plass

e2fsck - Brukes til å sjekke, og eventuelt reparere ext2 filsystemer og ext3 filsystemer

e2image - Brukes til å lagre kritiske ext2 filsystemdata i en fil

e2label - Viser eller endrer filsystemetiketten på ext2 filsystemet på en gitt enhet

e2mmpstatus - Sjekker MMP statusen for et ext4 filsystem

e2scrub - Sjekker innholdet i et montert ext[234] filsystem

e2scrub_all - Sjekker alle monterte ext[234] filsystemer for feil

e2undo - Avspiller angreloggen undo_log for et ext2/ext3/ext4 filsystem funnet på en enhet [Dette kan brukes til å angre en mislykket operasjon av et e2fsprogs program.]

e4crypt - Ext4 filsystemkrypteringsverktøy

e4defrag - Tilkoblet defragmentering for ext4 filsystemer

filefrag - Rapporter om hvor dårlig fragmentert en bestemt fil kan være

fsck.ext2 - Som standard sjekker ext2 filsystemer og er en hard lenke til e2fsck

fsck.ext3 - Som standard sjekker ext3 filsystemer og er en hard lenke til e2fsck

fsck.ext4 - Som standard sjekker ext4 filsystemer og er en hard lenke til e2fsck

logsave - Lagrer utdataene fra en kommando i en loggfil

lsattr - Viser attributtene til filer på et annet utvidet filsystem

mk_cmds - Konverterer en tabell med kommandonavn og hjelpemeldinger til en C kildefil som er egnet for bruk med libss delsystembibliotek

mke2fs - Oppretter et ext2 eller ext3 filsystem på den gitte enheten

mkfs.ext2 - Skaper som standard ext2 filsystemer og er en hard lenke til mke2fs

mkfs.ext3 - Skaper som standard ext3 filsystemer og er en hard lenke til mke2fs

mkfs.ext4 - Skaper som standard ext4 filsystemer og er en hard lenke til mke2fs

mklost+found - Brukes til å lage en lost+found mappe på et ext2 filsystem; den tildeler diskblokker på forhånd til denne katalogen for å lette oppgaven til e2fsck

resize2fs - Kan brukes til å forstørre eller krympe et ext2 filsystem

tune2fs - Justerer innstillbare filsystemparametere på et ext2 filsystem

libcom_err - Vanlige feilvisning rutine

libe2p - Brukt av dumpe2fs, chattr og lsattr

libext2fs - Inneholder rutiner som lar programmer på brukernivå manipulere et ext2 filsystem

libss - Brukt av debugfs

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.76. Sysklogd-1.5.1

Sysklogd pakken inneholder programmer for logging av systemmeldinger, for eksempel de som er gitt av kjernen når uvanlige ting skjer.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 0.6 MB

6.76.1. Installasjon av Sysklogd

Først må du fikse problemer som forårsaker en segmenteringsfeil under noen forhold i klogd og fikse en foreldet programkonstruksjon:

sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
sed -i 's/union wait/int/' syslogd.c

Kompilere pakken:

make

Denne pakken leveres ikke med en testpakke.

Installer pakken:

make BINDIR=/sbin install

6.76.2. Konfigurere Sysklogd

Opprett en ny /etc/syslog.conf fil ved å kjøre følgende:

cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf

 

auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *

 

# End /etc/syslog.conf
EOF

6.76.3. Innholdet i Sysklogd

Installerte programmer: klogd og syslogd

 

Kort beskrivelse

klogd - En systemnisse for å fange opp og logge kjernemeldinger

syslogd - Logger meldingene som systemprogrammene tilbyr for logging [Hver logget melding inneholder minst et datostempel og et vertsnavn, og normalt også programmets navn, men det avhenger av hvor tillitsfull loggnissen blir fortalt å være.]

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.77. Sysvinit-2.96

Sysvinit pakken inneholder programmer for å kontrollere oppstart, kjøring og avslutning av systemet.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 1.4 MB

6.77.1. Installasjon av Sysvinit

Bruk først en oppdatering som fjerner flere programmer installert av andre pakker, avklarer en melding og fikser en kompilatorvarsel:

patch -Np1 -i ../sysvinit-2.96-consolidated-1.patch

Kompilere pakken:

make

Denne pakken leveres ikke med en testpakke.

Installer pakken:

make install

6.77.2. Innholdet i Sysvinit

Installerte programmer: bootlogd, fstab-decode, halt, init, killall5, poweroff (lenker til halt), reboot (lenker til halt), runlevel, shutdown, og telinit (lenker til init)

 

Kort beskrivelse

bootlogd - Logger oppstartsmeldinger til en loggfil

fstab-decode - Kjør en kommando med fstab-kodede argumenter

halt - Påkaller normalt shutdown med alternativet -h, bortsett fra når det allerede er i kjøringsnivå 0, så forteller det kjernen å stoppe systemet; den bemerker i filen /var/log/wtmp at systemet blir brakt ned

init - Den første prosessen som startes når kjernen har initialisert maskinvaren som tar over oppstartsprosessen og starter alle prosessene som er spesifisert i konfigurasjonsfilen

killall5 - Sender et signal til alle prosesser, bortsett fra prosessene i sin egen økt, slik at den ikke dreper det overordnede skallet

poweroff - Ber kjernen om å stanse systemet og slå av datamaskinen (se halt)

reboot - Ber kjernen om å starte systemet på nytt (se halt)

runlevel - Rapporterer forrige og nåværende kjørenivå, som nevnt i den siste kjøringsnivåoppføringen i /var/run/utmp

shutdown - Bringer systemet ned på en sikker måte, signaliserer alle prosesser og varsler alle påloggede brukere

telinit - Forteller init hvilket kjørenivå du vil endre til

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.78. Eudev-3.2.9

Eudev pakken inneholder programmer for dynamisk oppretting av enhetsnoder.

 

Omtrentlig byggetid: 0.2 SBU

Nødvendig diskplass: 83 MB

6.78.1. Installasjon av Eudev

Forbered Eudev for kompilering:

./configure --prefix=/usr \
                    --bindir=/sbin \
                    --sbindir=/sbin \
                    --libdir=/usr/lib \
                    --sysconfdir=/etc \
                    --libexecdir=/lib \
                    --with-rootprefix= \
                    --with-rootlibdir=/lib \
                    --enable-manpages \
                    --disable-static

Kompilere pakken:

make

Lag noen mapper nå som er nødvendige for tester, men vil også bli brukt som en del av installasjonen:

mkdir -pv /lib/udev/rules.d
mkdir -pv /etc/udev/rules.d

For å teste resultatene:

make check

Installer pakken:

make install

Installer noen tilpassede regler og støttefiler som er nyttige i et LFS miljø:

tar -xvf ../udev-lfs-20171102.tar.xz
make -f udev-lfs-20171102/Makefile.lfs install

6.78.2. Konfigurere Eudev

Informasjon om maskinvareenheter opprettholdes i katalogene /etc/udev/hwdb.d og /lib/udev/hwdb.d. Eudev trenger at informasjonen blir samlet inn i en binær database /etc/udev/hwdb.bin. Opprett den opprinnelige databasen:

udevadm hwdb --update

Denne kommandoen må kjøres hver gang maskinvareinformasjonen oppdateres.

6.78.3. Innholdet i Eudev

Installerte programmer: udevadm og udevd

Installert bibliotek: libudev.so

Installerte mapper: /etc/udev, /lib/udev, og /usr/share/doc/udev-udev-lfs-20171102

 

Kort beskrivelse

udevadm - Generisk administrasjonsverktøy for udev: styrer udevd-nissen, gir informasjon fra Udev-databasen, overvåker hendelser, venter på at hendelser skal fullføres, tester Udev-konfigurasjon og utløser hendelser for en gitt enhet

udevd - En nisse som lytter etter hendelser på netlink-kontakten, oppretter enheter og kjører de konfigurerte eksterne programmene som svar på disse hendelsene

libudev - Et biblioteksgrensesnitt for udev enhetsinformasjon

/etc/udev - Inneholder Udev-konfigurasjonsfiler, enhetstillatelser og regler for navngivning av enheter

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.79. Om feilsøkingssymboler

De fleste programmer og biblioteker er som standard samlet med feilsøkingssymboler inkludert (med gcc's -g alternativet). Dette betyr at når feilsøking av et program eller bibliotek som ble samlet med feilsøkingsinformasjon inkludert, kan feilsøkingsprogrammet ikke bare gi minneadresser, men også navnene på rutinene og variablene.

Inkluderingen av disse feilsøkingssymbolene utvider imidlertid et program eller et bibliotek betydelig. Følgende er et eksempel på hvor mye plass disse symbolene opptar:

Størrelser kan variere avhengig av hvilken kompilator og C bibliotek som ble brukt, men når man sammenligner programmer med og uten feilsøkingssymboler, vil forskjellen vanligvis være en faktor mellom to og fem.

Fordi de fleste brukere aldri vil bruke en feilsøkingsprogramvare på systemprogramvaren, kan mye diskplass gjenvinnes ved å fjerne disse symbolene. Den neste delen viser hvordan du fjerner alle feilsøkingssymboler fra programmene og bibliotekene.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.80. Stripping Igjen

Denne delen er valgfri. Hvis den tiltenkte brukeren ikke er en programmerer og ikke planlegger å feilsøke systemprogramvaren, kan systemstørrelsen reduseres med omtrent 90 MB ved å fjerne feilsøkingssymbolene fra binærfiler og biblioteker. Dette medfører ingen ulempe annet enn at du ikke lenger kan feilsøke programvaren.

De fleste som bruker kommandoene nevnt nedenfor, opplever ingen problemer. Det er imidlertid enkelt å lage en skrivefeil og gjøre det nye systemet ubrukelig, så før du kjører stripekommandoer, er det lurt å ta en sikkerhetskopi av LFS systemet i sin nåværende tilstand.

Plasser først feilsøkingssymbolene for utvalgte biblioteker i separate filer. Denne feilsøkingsinformasjonen er nødvendig hvis du kjører regresjonstester som bruker valgrind eller gdb senere i BLFS.

save_lib="ld-2.31.so libc-2.31.so libpthread-2.31.so libthread_db-1.0.so"

 

cd /lib

 

for LIB in $save_lib; do
      objcopy --only-keep-debug $LIB $LIB.dbg
      strip --strip-unneeded $LIB
      objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done

 

save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.27
                       libitm.so.1.0.0 libatomic.so.1.2.0"

 

cd /usr/lib

 

for LIB in $save_usrlib; do
      objcopy --only-keep-debug $LIB $LIB.dbg
      strip --strip-unneeded $LIB
      objcopy --add-gnu-debuglink=$LIB.dbg $LIB
done

 

unset LIB save_lib save_usrlib

Før du utfører strippingen, må du være spesielt forsiktig med å sikre at ingen av binærfiler som skal fjernes kjører:

exec /tools/bin/bash

Nå kan binærfiler og biblioteker fjernes trygt:

/tools/bin/find /usr/lib -type f -name \*.a \

     -exec /tools/bin/strip --strip-debug {} ';'

 

/tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \

     -exec /tools/bin/strip --strip-unneeded {} ';'

 

/tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
     -exec /tools/bin/strip --strip-all {} ';'

Et stort antall filer vil bli rapportert som at filformatet ikke gjenkjennes. Disse advarslene kan trygt ignoreres. Disse advarslene indikerer at disse filene er skript i stedet for binære filer.

Forrige Hjem Neste
6. Installere grunnleggende systemprogramvare

6.81. Rydde opp

Til slutt, rydde opp i noen ekstra filer som er igjen fra å kjøre tester:

rm -rf /tmp/*

Logg deg ut og gå inn i chroot miljøet på nytt med en oppdatert chroot kommando. Fra nå av, bruk denne oppdaterte chroot kommandoen når du trenger å gå inn i chroot miljøet igjen, etter at du har avsluttet:

logout

 

chroot "$LFS" /usr/bin/env -i \
     HOME=/root TERM="$TERM" \
     PS1='(lfs chroot) \u:\w\$ ' \
     PATH=/bin:/usr/bin:/sbin:/usr/sbin \
     /bin/bash --login

Årsaken til dette er at programmene i /tools ikke lenger er nødvendige. Av denne grunn kan du slette /tools mappen hvis det er ønskelig.

Fjerning /tools fjerner også midlertidige kopier av Tcl, Expect og DejaGNU som ble brukt til å kjøre testene på verktøykjeden. Hvis du trenger disse programmene senere, må de kompileres og installeres på nytt. BLFS-boken har instruksjoner for dette (se http://www.linuxfromscratch.org/blfs/).

Hvis de virtuelle kjerne filsystemene har blitt demontert, enten manuelt eller gjennom en omstart, må du sørge for at de virtuelle kjerne filsystemene er montert når du angir chroot på nytt. Denne prosessen ble forklart i kapittel 6.2.2, "Montering og befolkning av /dev" og seksjon 6.2.3, "Montering av virtuelle kjernefilsystemer".

Det var flere statiske biblioteker som ikke ble undertrykt tidligere i kapitlet for å tilfredsstille regresjonstestene i flere pakker. Disse bibliotekene er fra binutils, bzip2, e2fsprogs, flex, libtool og zlib. Fjern dem om ønskelig:

rm -f /usr/lib/lib{bfd,opcodes}.a
rm -f /usr/lib/libbz2.a
rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
rm -f /usr/lib/libltdl.a
rm -f /usr/lib/libfl.a
rm -f /usr/lib/libz.a

Det er også flere filer installert i katalogene /usr/lib og /usr/libexec med filtypen .la. Dette er "libtool arkiv"  filer og generelt unødvendige på et linux system. Ingen av disse er nødvendige på dette tidspunktet. For å fjerne dem, kjør:

find /usr/lib /usr/libexec -name \*.la -delete

For mer informasjon om libtool arkivfiler, se BLFS seksjonen "About Libtool Archive (.la) files".

Forrige Hjem Neste

7. Systemkonfigurasjon

Oppstart av et Linux system innebærer flere oppgaver.

7. Systemkonfigurasjon

7.1. Introduksjon

Oppstart av et Linux system innebærer flere oppgaver. Prosessen må montere både virtuelle og ekte filsystemer, initialisere enheter, aktivere vekselminne, kontrollere filsystemer for integritet, montere eventuelle vekselfiler eller filer, stille inn systemklokken, få opp nettverk, starte alle nisser (daemon) som systemet krever, og oppnå eventuelle andre tilpassede oppgaver som brukeren trenger. Denne prosessen må organiseres for å sikre at oppgavene utføres i riktig rekkefølge, men samtidig utføres så raskt som mulig.

7.1.1. System V

System V er den klassiske oppstartsprosessen som har blitt brukt i Unix og Unix lignende systemer som Linux siden ca 1983. Den består av et lite program, init, som setter opp grunnleggende programmer som login (via getty) og kjører et skript . Dette skriptet, vanligvis kalt rc, kontrollerer kjøringen av et sett med ekstra skript som utfører oppgavene som kreves for å initialisere systemet.

init programmet styres av filen /etc/inittab og er organisert i kjøringsnivåer som kan kjøres av brukeren:

0 — stopp
1 — Enbrukermodus
2 — Multiuser, without networking
3 — Flerbruker uten nettverk
4 — Brukerdefinerbar
5 — Full flerbrukermodus med skjermbehandling
6 — start på nytt

Vanlig standard kjørenivå er 3 eller 5.

Fordeler
Ulemper
Forrige Hjem Neste
7. Systemkonfigurasjon

7.2. LFS-Bootscripts-20191031

LFS-Bootscripts pakken inneholder et sett med skript for å starte/stoppe LFS systemet ved oppstart/avslutning. Konfigurasjonsfilene og prosedyrene som trengs for å tilpasse oppstartsprosessen er beskrevet i de følgende avsnittene.

 

Omtrentlig byggetid: mindre enn 0.1 SBU

Nødvendig diskplass: 244 KB

7.2.1. Installasjon av LFS-Bootscripts

Installer pakken:

make install

7.2.2. Innholdet i LFS-Bootscripts

Installerte programmer: checkfs, cleanfs, console, functions, halt, ifdown, ifup, localnet, modules, mountfs, mountvirtfs, network, rc, reboot, sendsignals, setclock, ipv4-static, swap, sysctl, sysklogd, template, udev, og udev_retry

Installerte mapper: /etc/rc.d, /etc/init.d (symbolsk lenke), /etc/sysconfig, /lib/services, /lib/lsb (symbolsk lenke)

 

Kort beskrivelse

checkfs - Sjekker integriteten til filsystemene før de monteres (med unntak av journal og nettverksbaserte filsystemer)

cleanfs - Fjerner filer som ikke skal bevares mellom omstart, for eksempel de i /var/run/ og /var/lock/; den gjenskaper /var/run/utmp og fjerner de muligens tilstedeværende /etc/nologin, /fastboot og /forcefsck filene

console - Laster riktig tastetabell for ønsket tastaturoppsett; det setter også skjermskrifttypen

functions - Inneholder vanlige funksjoner, for eksempel feil og statuskontroll, som brukes av flere bootscripts

halt - Stanser systemet

ifdown - Stopper en nettverksenhet

ifup - Initialiserer en nettverksenhet

localnet - Setter opp systemets vertsnavn og lokal filmonterings enhet

modules - Laster inn kjernemoduler oppført i /etc/sysconfig/modules, ved hjelp av argumenter som også er gitt der

mountfs - Monterer alle filsystemer, unntatt de som er merket noauto eller er nettverksbaserte

mountvirtfs - Monterer virtuelle kjernefilsystemer, for eksempel proc

network - Setter opp nettverksgrensesnitt, for eksempel nettverkskort, og setter opp standard ruter (hvis aktuelt)

rc - Hovedkontrollskriptet på kjørenivå; det er ansvarlig for å kjøre alle de andre bootskriptene en etter en, i en sekvens bestemt av navnet på de symbolske lenkene som behandles

reboot - Starter systemet på nytt

sendsignals - Sørger for at hver prosess avsluttes før systemet starter på nytt eller stopper

setclock - Tilbakestiller kjerneklokken til lokal tid i tilfelle maskinvareklokken ikke er satt til UTC

ipv4-static - Tilbyr funksjonaliteten som trengs for å tilordne en statisk Internet Protocol (IP)  adresse til et nettverksgrensesnitt

swap - Aktiverer og deaktiverer vekselfil og partisjoner

sysctl - Laster systemkonfigurasjonsverdier fra /etc/sysctl.conf, hvis filen eksisterer, i kjernen som kjører

sysklogd - Starter og stopper system og kjernelogg nisser

template - En mal for å lage egendefinerte bootscripts for andre nisser

udev - Forbereder /dev mappen og starter Udev

udev_retry - Prøver på nytt mislykkede udev hendelser, og kopierer genererte reglerfiler fra /run/udev til /etc/udev/rules.d om nødvendig

Forrige Hjem Neste
7. Systemkonfigurasjon

7.3. Oversikt over enhets og modul håndtering

I kapittel 6 installerte vi Udev pakken da eudev ble bygget. Før vi går inn i detaljene om hvordan dette fungerer, er en kort historie med tidligere metoder for håndtering av enheter i orden.

Generelt brukte Linux systemer tradisjonelt en metode for opprettelse av statiske enheter, hvorved mange enhetsnoder ble opprettet under /dev (noen ganger bokstavelig talt tusenvis av noder), uavhengig av om de tilsvarende maskinvareenhetene faktisk eksisterte. Dette ble vanligvis gjort via et MAKEDEV skript, som inneholder et antall kall til mknod programmet med relevante større og mindre enhetsnumre for alle mulige enheter som kan eksistere i verden.

Ved hjelp av Udev metoden er det bare de enhetene som oppdages av kjernen som får enhetsnoder opprettet for dem. Fordi disse enhetsnodene blir opprettet hver gang systemet starter, blir de lagret på et devtmpfs filsystem (et virtuelt filsystem som ligger helt i systemminnet). Enhetsnoder krever ikke mye plass, så minnet som brukes er ubetydelig.

7.3.1. Historie

I februar 2000 ble et nytt filsystem kalt devfs flettet inn i 2.3.46-kjernen og ble gjort tilgjengelig i 2.4-serien med stabile kjerner. Selv om det var til stede i selve kjernekilden, mottok denne metoden for å lage enheter dynamisk aldri overveldende støtte fra kjerneutviklerne.

Hovedproblemet med tilnærmingen som ble benyttet av devfs var måten den håndterte enhetsgjenkjenning, oppretting og navngivning på. Det sistnevnte problemet, navnet på enhetsnodenavn, var kanskje det mest kritiske. Det er generelt akseptert at hvis enhetsnavn kan konfigureres, så skal enhetsnavn politikken være opp til en systemadministrator, og ikke pålagt dem av en spesielle utvikler. Devfs filsystemet led også av kjøreforhold som var iboende i utformingen, og som ikke kunne rettes uten en betydelig revisjon av kjernen. Den ble markert som avviklet i lang tid - på grunn av manglende vedlikehold - og ble til slutt fjernet fra kjernen i juni 2006.

Med utviklingen av det ustabile 2.5 kjernetreet, som senere ble utgitt som 2.6 serien av stabile kjerner, ble det et nytt virtuelt filsystem kalt sysfs. Jobben til sysfs er å eksportere en visning av systemets maskinvarekonfigurasjon til brukerområdeprosesser. Med denne brukerområdet-synlige representasjonen ble muligheten for å utvikle en brukerstedserstatning for devfs mye mer realistisk.

7.3.2. Udev Implementering

7.3.2.1. Sysfs

Sysfs filsystemet ble nevnt kort ovenfor. Man kan lure på hvordan sysfs vet om enhetene som er tilstede i et system og hvilke enhetsnumre som skal brukes til dem. Drivere som er kompilert i kjernen, registrerer objektene sine direkte med en sysfs (devtmpfs internt) slik de oppdages av kjernen. For drivere som er kompilert som moduler, vil denne registreringen skje når modulen lastes inn. Når sysfs filsystemet er montert (på /sys), er data som driverne registrerer med sysfs tilgjengelig for brukerområdeprosesser og for utevd for behandling (inkludert modifikasjoner av enhetsnoder).

7.3.2.2. Oppretting av enhetsnode

Enhetsfiler opprettes av kjernen av devtmfps filsystemet. Enhver driver som ønsker å registrere en enhetsnode, vil gå gjennom devtmpfs (via driverkjernen) for å gjøre det. Når en devtmpfs forekomst er montert på /dev, blir enhetsnoden opprettet med et fast navn, tillatelser og eier.

Kort tid senere vil kjernen sende en hendelse til udevd. Basert på reglene som er spesifisert i filene i katalogene /etc/udev/rules.d, /lib/udev/rules.d og /run/udev/rules.d, vil udevd opprette flere symlenker til enhetsnoden, eller endre tillatelser, eier eller gruppe, eller endre den interne udevd databaseoppføringen (navnet) for det objektet.

Reglene i disse tre katalogene er nummererte og alle tre katalogene slås sammen. Hvis udevd ikke finner en regel for enheten den oppretter, vil den la tillatelsene og eierskapet ligge på det devtmpfs som ble brukt i utgangspunktet.

7.3.2.3. Modulinnlasting

Enhetsdrivere som er sammensatt som moduler, kan ha innebygde aliaser. Aliaser er synlige i utdataene fra modinfo programmet og er vanligvis relatert til busspesifikke identifikatorer for enheter som støttes av en modul. For eksempel støtter snd-fm801 driveren PCI enheter med leverandør-ID 0x1319 og enhets-ID 0x0801, og har et alias "pci: v00001319d00000801sv * sd * bc04sc01i *". For de fleste enheter eksporterer bussjåføren aliaset til sjåføren som vil håndtere enheten via sysfs. F.eks. Kan filen /sys/bus/pci/devices/0000:00:0d.0/modalias inneholde strengen “pci: v00001319d00000801sv00001319sd00001319bc04sc01i00”. Standardreglene som følger med Udev vil føre til at udevd kaller opp /sbin/modprobe med innholdet i MODALIAS uevent miljøvariabelen (som skal være det samme som innholdet i modalias filen i sysfs), og laster dermed alle moduler hvis alias stemmer overens denne strengen etter utvidelse av jokertegn.

I dette eksemplet betyr dette at i tillegg til snd-fm801, vil den foreldede (og uønskede) forte driveren lastes inn hvis den er tilgjengelig. Se nedenfor for hvordan lastingen av uønskede drivere kan forhindres.

Selve kjernen er også i stand til å laste inn moduler for nettverksprotokoller, filsystemer og NLS støtte på forespørsel.

7.3.2.4. Håndtering av hotpluggable/dynamiske enheter

Når du kobler til en enhet, for eksempel en USB spiller (Universal Serial Bus), gjenkjenner kjernen at enheten nå er koblet til og genererer en hendelse. Denne hendelsen håndteres deretter av udevd som beskrevet ovenfor.

7.3.3. Problemer med å laste inn moduler og lage enheter

Det er noen få mulige problemer når det gjelder automatisk oppretting av enhetsnoder.

7.3.3.1. En kjernemodul lastes ikke inn automatisk

Udev vil bare laste inn en modul hvis den har et busspesifikt alias og bussdriveren eksporterer de nødvendige aliasene riktig til sysfs. I andre tilfeller bør man ordne modulinnlasting på annen måte. Med Linux-5.5.3 er Udev kjent for å laste riktig skrevet drivere for INPUT-, IDE-, PCI-, USB-, SCSI-, SERIO- og FireWire-enheter.

For å avgjøre om enhetsdriveren du trenger har nødvendig støtte for Udev, kjør modinfo med modulnavnet som argument. Prøv nå å finne enhetsmappen under /sys/bus og sjekk om det er en modalias fil der.

Hvis modalias filen finnes i sysfs, støtter driveren enheten og kan snakke med den direkte, men har ikke aliaset, det er en feil i driveren. Last inn driveren uten hjelp fra Udev og forvent at problemet blir løst senere.

Hvis det ikke er noen modalias filer i den aktuelle katalogen under /sys/bus, betyr dette at kjerneutviklerne ennå ikke har lagt til modalias støtte til denne busstypen. Med Linux-5.5.3 er dette tilfelle med ISA busser. Forvent at dette problemet blir løst i senere kjerneversjoner.

Udev er ikke ment å laste inn “innpakkede” (“wrapper”) drivere som snd-pcm-oss og drivere som ikke er maskinvare, for eksempel loop i det hele tatt.

7.3.3.2. En kjernemodul lastes ikke automatisk, og Udev er ikke ment å laste den

Hvis "innpaknings"  modulen bare forbedrer funksjonaliteten som tilbys av en annen modul (f.eks. Snd-pcm-oss forbedrer funksjonaliteten til snd-pcm ved å gjøre lydkortene tilgjengelige for OSS-applikasjoner), konfigurerer du modprobe for å laste inn innpakningen etter at Udev har lastet inn den innpakkede modulen. For å gjøre dette, legg til en "softdep" linje i den tilsvarende /etc/modprobe.d/<filnavn> .conf filen. For eksempel:

softdep snd-pcm post: snd-pcm-oss

Merk at kommandoen “softdep” også tillater pre: avhengigheter, eller en blanding av både pre: og post:. Se modprobe.d (5) manual side for mer informasjon om “softdep” syntaks og funksjoner.

Hvis den aktuelle modulen ikke er en innpakning og er nyttig i seg selv, konfigurerer du modulets bootscript for å laste denne modulen på systemstart. For å gjøre dette, legg til modulnavnet i filen /etc/sysconfig/modules på en egen linje. Dette fungerer også for innpakkede moduler, men er i så fall ikke optimalt.

7.3.3.3. Udev laster inn noen uønskede moduler

Enten ikke bygg modulen, eller svarteliste den i en /etc/modprobe.d/blacklist.conf fil som gjort med forte modulen i eksemplet nedenfor:

blacklist forte

Svartelistede moduler kan fortsatt lastes manuelt med den eksplisitte modprobe kommandoen.

7.3.3.4. Udev oppretter en enhet feil, eller lager en feil symlenke

Dette skjer vanligvis hvis en regel uventet samsvarer med en enhet. For eksempel kan en dårlig skrevet regel matche både en SCSI-disk (som ønsket) og den tilsvarende SCSI-generiske enheten (feil) av leverandøren. Finn den fornærmende regelen og gjør den mer spesifikk, ved hjelp av udevadm info kommandoen.

7.3.3.5. Udev regelen fungerer upålitelig

Dette kan være en annen manifestasjon av det forrige problemet. Hvis ikke, og regelen din bruker sysfs attributter, kan det være et problem med kjernetiming, som skal løses i senere kjerner. Foreløpig kan du omgå det ved å lage en regel som venter på det brukte sysfs attributtet og legge den til i /etc/udev/rules.d/10-wait_for_sysfs.rules filen (opprett denne filen hvis den ikke eksisterer). Gi beskjed til LFS Development listen hvis du gjør det, og det hjelper.

7.3.3.6. Udev oppretter ikke en enhet

Ytterligere tekst antar at driveren er innebygd statisk i kjernen eller allerede er lastet inn som en modul, og at du allerede har sjekket at Udev ikke lager en feil navngitt enhet.

Udev har ingen informasjon som trengs for å opprette en enhetsnode hvis en kjernedriver ikke eksporterer dataene til sysfs. Dette er vanligst med tredjepartsdrivere utenfor kjernetreet. Opprett en statisk enhetsnode i /lib/udev/devices med riktige større/mindre tall (se filen devices.txt i kjernedokumentasjonen eller dokumentasjonen fra tredjeparts driverleverandør). Den statiske enhetsnoden blir kopiert til /dev av udev.

7.3.3.7. Navnerekkefølgen på enheten endres tilfeldig etter omstart

Dette skyldes det faktum at Udev, etter design, håndterer hendelser og laster moduler parallelt, og dermed i en uforutsigbar rekkefølge. Dette vil aldri bli "løst". Du bør ikke stole på at kjernenhetens navn er stabile. I stedet lager du dine egne regler som lager symlinker med stabile navn basert på noen stabile attributter til enheten, for eksempel et serienummer eller utdata fra forskjellige * _id-verktøy installert av Udev. Se avsnitt 7.4. “Administrere enheter” og seksjon 7.5. “Generell nettverkskonfigurasjon” for eksempler.

7.3.4. Nyttig lesing

Ytterligere nyttig dokumentasjon er tilgjengelig på følgende nettsteder:

Forrige Hjem Neste
7. Systemkonfigurasjon

7.4. Administrere enheter

7.4.1. Nettverksenheter

Udev navngir som standard nettverksenheter i henhold til Fastvare/BIOS data eller fysiske egenskaper som buss, spor eller MAC-adresse. Formålet med denne navngivningskonvensjonen er å sikre at nettverksenheter navngis konsekvent og ikke basert på tidspunktet nettverkskortet ble oppdaget. For eksempel på en datamaskin som har to nettverkskort laget av Intel og Realtek, kan nettverkskortet produsert av Intel bli eth0 og Realtek kortet blir eth1. I noen tilfeller blir kortene omnummerert etter omstart.

I det nye navneskemaet vil typiske nettverksenhetsnavn være noe som enp5s0 eller wlp3s0. Hvis denne navngivningskonvensjonen ikke er ønsket, kan den tradisjonelle navneskjemaet eller en tilpasset ordning implementeres.

7.4.1.1. Deaktivering av vedvarende navngivning på kjernekommandolinjen

Det tradisjonelle navneskjemaet som bruker eth0, eth1, etc kan gjenopprettes ved å legge til net.ifnames=0 på kjernekommandolinjen. Dette er mest hensiktsmessig for de systemene som bare har en Ethernet enhet av samme type. Bærbare datamaskiner har ofte flere Ethernet tilkoblinger som heter eth0 og wlan0 og er også kandidater for denne metoden. Kommandolinjen sendes i GRUB konfigurasjonsfilen. Se avsnitt 8.4.4, “Opprette GRUB konfigurasjonsfilen”.

7.4.1.2. Opprette tilpassede Udev regler

Navneskjemaet kan tilpasses ved å lage tilpassede Udev regler. Et skript er inkludert som genererer de innledende reglene. Generer disse reglene ved å kjøre:

bash /lib/udev/init-net-rules.sh

Inspiser nå filen /etc/udev/rules.d/70-persistent-net.rules for å finne ut hvilket navn som ble tildelt hvilken nettverksenhet:

cat /etc/udev/rules.d/70-persistent-net.rules

I noen tilfeller, for eksempel når MAC adresser har blitt tildelt et nettverkskort manuelt eller i et virtuelt miljø som Qemu eller Xen, kan det hende at nettverksregelfilen ikke har blitt generert fordi adressene ikke blir tildelt konsekvent. I disse tilfellene kan denne metoden ikke brukes.

Filen begynner med en kommentarblokk etterfulgt av to linjer for hver nettverkskort. Den første linjen for hvert nettverkskort er en kommentert beskrivelse som viser maskinvare-IDene (f.eks. PCI leverandøren og enhets-IDene, hvis det er et PCI-kort), sammen med driveren i parentes, hvis driveren kan bli funnet. Verken maskinvare-ID eller driveren brukes til å bestemme hvilket navn et grensesnitt skal få; denne informasjonen er kun for referanse. Den andre linjen er Udev regelen som samsvarer med dette nettverkskortet og faktisk tildeler det et navn.

Alle Udev regler består av flere nøkler, atskilt med komma og valgfri mellomrom. Denne regelens nøkler og en forklaring på hver av dem er som følger:

Verdien av NAME er den viktige delen. Forsikre deg om at du vet hvilket navn som er tildelt hvert av nettverkskortene dine før du fortsetter, og sørg for å bruke den NAME verdien når du oppretter konfigurasjonsfilene nedenfor.

7.4.2. CD-ROM symlinker

Noe programvare som du kanskje vil installere senere (f.eks. Forskjellige mediaspillere) forventer at /dev/cdrom og /dev/dvd symlinker eksisterer, og at de peker på en CD-ROM eller DVD-ROM enhet. Det kan også være praktisk å sette referanser til disse symlinkene i /etc/fstab. Udev kommer med et skript som genererer reglerfiler for å lage disse symlinkene for deg, avhengig av funksjonene til hver enhet, men du må bestemme hvilken av de to driftsmåtene du vil at skriptet skal bruke.

For det første kan skriptet fungere i "by-path" modus (brukes som standard for USB og FireWire enheter), hvor reglene det oppretter avhenger av den fysiske banen til CD eller DVD enheten. For det andre kan den fungere i “by-id” modus (standard for IDE og SCSI enheter), der reglene den lager, avhenger av identifikasjonsstrenger som er lagret i selve CD eller DVD enheten. Banen bestemmes av Udevs path_id skript, og identifikasjonsstrengene leses fra maskinvaren av programmene ata_id eller scsi_id, avhengig av hvilken type enhet du har.

Det er fordeler med hver tilnærming; riktig tilnærming vil avhenge av hva slags enhetsendringer som kan skje. Hvis du forventer at den fysiske banen til enheten (det vil si portene og/eller sporene den kobles til) endres, for eksempel fordi du planlegger å flytte stasjonen til en annen IDE port eller en annen USB kontakt, bør du bruk “by-id” -modus. På den annen side, hvis du forventer at enhetens identifikasjon endres, for eksempel fordi den kan dø, og du vil erstatte den med en annen enhet med samme funksjoner og som er koblet til de samme kontaktene, bør du bruke “by-path” modus.

Hvis begge typene er mulig med stasjonen din, velger du en modus basert på hvilken type endring du forventer å skje oftest.

Eksterne enheter (for eksempel en USB tilkoblet CD stasjon) bør ikke bruke by-path, fordi hver gang enheten kobles til en ny ekstern port, vil den fysiske banen endres. Alle eksterne tilkoblede enheter vil ha dette problemet hvis du skriver Udev regler for å gjenkjenne dem ved deres fysiske bane; problemet er ikke begrenset til CD og DVD stasjoner.

Hvis du ønsker å se verdiene som Udev skriptene vil bruke, finn den tilsvarende katalogen under /sys for den aktuelle CD-ROM enheten (f.eks. Dette kan være /sys/block/hdd) og kjør en kommando som ligner på følgende:

udevadm test /sys/block/hdd

Se på linjene som inneholder utdata fra forskjellige *_id-programmer. “by-id” modus vil bruke ID_SERIAL verdien hvis den eksisterer og ikke er tom, ellers vil den bruke en kombinasjon av ID_MODEL og ID_REVISION. “by-path” modus vil bruke ID_PATH verdien.

Hvis standardmodus ikke er egnet for din situasjon, kan følgende modifisering gjøres i /etc/udev/rules.d/83-cdrom-symlinks.rules filen, som følger (der modus er en av "by-id ” eller“ by-path ”):

sed -i -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
      /etc/udev/rules.d/83-cdrom-symlinks.rules

Merk at det ikke er nødvendig å opprette reglefilene eller symlinkene på dette tidspunktet, fordi du har bindemontert vertens /dev katalog i LFS systemet, og vi antar at symlinkene eksisterer på verten. Reglene og symlinkene blir opprettet første gang du starter LFS-systemet ditt.

Men hvis du har flere CD-ROM-enheter, kan symlinkene som genereres på det tidspunktet, peke på forskjellige enheter enn de peker på verten din, fordi enheter ikke blir oppdaget i en forutsigbar rekkefølge. Tilordningene som ble opprettet når du først startet LFS systemet, vil være stabile, så dette er bare et problem hvis du trenger symlinkene på begge systemene å peke på samme enhet. Hvis du trenger det, inspisere (og eventuelt rediger) den genererte /etc/udev/rules.d/70-persistent-cd.rules filen etter oppstart, for å sikre at de tildelte symlinkene samsvarer med det du trenger.

7.4.3. Håndterer dupliserte enheter

Som forklart i kapittel 7.3, “Oversikt over enhets og modulhåndtering”, er rekkefølgen enheter med samme funksjon vises i /dev, i det vesentlige tilfeldig. Hvis du for eksempel har et USB webkamera og en TV-tuner, refererer noen ganger /dev/video0 til kameraet og /dev/video1 refererer til tuneren, og noen ganger endres rekkefølgen til den motsatte etter en omstart. For alle maskinvareklasser unntatt lydkort og nettverkskort, kan dette løses ved å opprette Udev regler for tilpassede vedvarende symlinker. Tilfellet med nettverkskort dekkes separat i avsnitt 7.5, "Generell nettverkskonfigurasjon", og lydkortkonfigurasjon finner du i BLFS.

For hver av enhetene dine som sannsynligvis har dette problemet (selv om problemet ikke eksisterer i din nåværende Linux distribusjon), finn den tilsvarende katalogen under /sys/class eller /sys/block. For videoenheter kan dette være /sys/class /video4linux/videoX. Finn ut attributtene som identifiserer enheten unikt (vanligvis fungerer leverandør- og produkt-ID og/eller serienummer):

udevadm info -a -p /sys/class/video4linux/video0

Skriv deretter regler som lager symlinkene, for eksempel:

cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"

 

# Persistent symlinks for webcam and tuner
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
         SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
         SYMLINK+="tvtuner"

 

EOF

 

Resultatet er at /dev/video0 og /dev/video1 enheter fremdeles refererer tilfeldig til tuneren og webkameraet (og dermed aldri skal brukes direkte), men det er symlenkene /dev/tvtuner og /dev/webcam som alltid peker til riktig enhet.

Forrige Hjem Neste
7. Systemkonfigurasjon

7.5. Generell nettverkskonfigurasjon

7.5.1. Opprette konfigurasjonsfiler for nettverksgrensesnitt

Hvilke grensesnitt som bringes opp og ned av nettverksskriptet, avhenger vanligvis av filene i /etc/sysconfig/. Denne mappen skal inneholde en fil for hvert grensesnitt som skal konfigureres, for eksempel ifconfig.xyz, der “xyz” skal beskrive nettverkskortet. Grensesnittnavnet (f.eks. Eth0) er vanligvis passende. Inne i denne filen er attributter til dette grensesnittet, for eksempel dens IP adresse(r), nettverksmasker og så videre. Det er nødvendig at stammen til filnavnet er ifconfig.

Hvis prosedyren i forrige del ikke ble brukt, vil Udev tildele nettverkskortgrensesnittnavn basert på systemets fysiske egenskaper som enp2s1. Hvis du ikke er sikker på hva grensesnittnavnet ditt er, kan du alltid kjøre ip link eller ls/sys/class/net etter at du har startet systemet.

Følgende kommando oppretter en eksempelfil for eth0 enheten med en statisk IP-adresse:

cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
EOF

Verdiene i kursiv må endres i hver fil for å matche riktig oppsett.

Hvis ONBOOT variabelen er satt til “yes”, vil System V nettverksskriptet hente opp nettverksgrensesnittkortet (NIC) under oppstart av systemet. Hvis det er satt til noe annet enn “yes”, blir NIC ignorert av nettverksskriptet og blir ikke automatisk hentet. Grensesnittet kan startes eller stoppes manuelt med ifup og ifdown kommandoer.

IFACE variabelen definerer grensesnittnavnet, for eksempel eth0. Det kreves for alle konfigurasjonsfiler for nettverksenheter. Filnavnet må samsvare med denne verdien.

SERVICE variabelen definerer metoden som brukes for å skaffe IP-adressen. LFS-Bootscripts pakken har et modulært IP tildelingsformat, og å opprette flere filer i /lib/services/ mappen tillater andre IP tildelingsmetoder. Dette brukes ofte for DHCP (Dynamic Host Configuration Protocol), som er adressert i BLFS boka.

GATEWAY variabelen skal inneholde standard gateway IP-adresse, hvis den er til stede. Hvis ikke, så kommenter variabelen helt ut.

PREFIX variabelen inneholder antall biter som brukes i delnettet. Hver oktett i en IP-adresse er 8 bits. Hvis delnettets nettmaske er 255.255.255.0, bruker den de tre første oktettene (24 bits) til å spesifisere nettverksnummeret. Hvis nettmasken er 255.255.255.240, bruker den de første 28 bitene. Prefikser lenger enn 24 bits brukes ofte av DSL og kabelbaserte Internett leverandører (ISPer). I dette eksemplet (PREFIX=24) er nettmasken 255.255.255.0. Juster PREFIX variabelen i henhold til ditt spesifikke subnett. Hvis utelatt, er PREFIX som standard 24.

For mer informasjon se ifup man siden.

7.5.2. Opprette /etc/resolv.conf filen

Systemet vil trenge noen måter å skaffe Domain Name Service (DNS) navneløsning for å løse Internett domenenavn til IP-adresser, og omvendt. Dette oppnås best ved å plassere IP-adressen til DNS serveren, tilgjengelig fra ISP eller nettverksadministrator, i /etc/resolv.conf. Opprett filen ved å kjøre følgende:

cat > /etc/resolv.conf << "EOF"

# Begin /etc/resolv.conf

 

domain <Ditt domenenavn>
nameserver <IP-adressen til din primære navneserver>
nameserver <IP-adressen til den sekundære navneserveren>

 

# End /etc/resolv.conf
EOF

domain deklarasjonen kan utelates eller erstattes med et search deklarasjonen. Se man siden for resolv.conf for mer informasjon.

Erstatt <IP-adressen til navneserveren> med IP-adressen til DNS som er best egnet for oppsettet. Det vil ofte være mer enn én oppføring (krav krever sekundære servere for tilbakefallskapasitet). Hvis du bare trenger eller vil ha en DNS server, fjerner du den andre navneserverlinjen fra filen. IP-adressen kan også være en ruter på det lokale nettverket.

Google offentlige IPv4 DNS adresser er 8.8.8.8 og 8.8.4.4.

7.5.3. Konfigurere systemvertsnavnet

Under oppstartsprosessen brukes filen /etc /hostname til å etablere systemets vertsnavn.

Opprett /etc/hostname filen og skriv inn et vertsnavn ved å kjøre:

echo "<lfs>" > /etc/hostname

<lfs> må erstattes med navnet som er gitt til datamaskinen. Ikke skriv inn Fully Qualified Domain Name (FQDN) her. Denne informasjonen legges i /etc/hosts filen.

7.5.4. Tilpasse /etc/hosts filen

Bestem deg for IP-adressen, fullt kvalifisert domenenavn (FQDN) og mulige aliaser for bruk i /etc/hosts filen. Syntaksen er:

IP_address minvert.eksempel.org aliases

Med mindre datamaskinen skal være synlig for Internett (dvs. det er et registrert domene og en gyldig blokk med tildelte IP-adresser - de fleste brukere har ikke dette), må du sørge for at IP-adressen er i IP-adresseområdet for det private nettverket. Gyldige områder er:

Privat nettverksadresseområde            Normal Prefix
10.0.0.1 - 10.255.255.254                         8
172.x.0.1 - 172.x.255.254                         16
192.168.y.1 - 192.168.y.254                     24

x kan være et hvilket som helst tall i området 16-31. y kan være et hvilket som helst tall i området 0-255.

Selv om du ikke bruker et nettverkskort, kreves det fortsatt en gyldig FQDN. Dette er nødvendig for at visse programmer skal fungere riktig.

Opprett /etc/hosts filen ved å kjøre:

cat > /etc/hosts << "EOF"
# Begin /etc/hosts

 

127.0.0.1 localhost
127.0.1.1 <FQDN> <VERTSNAVN>
<192.168.1.1> <FQDN> <VERTSNAVN> [alias1] [alias2 ...]
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

 

# End /etc/hosts
EOF

Verdiene <192.168.1.1>, <FQDN> og <VERTSNAVN> må endres for spesifikke bruksområder eller krav (hvis tildelt en IP-adresse av et nettverk/systemadministrator og maskinen vil være koblet til et eksisterende nettverk). Det valgfrie aliasnavnet(e) kan utelates.

Forrige Hjem Neste
7. Systemkonfigurasjon

7.6. System V Bootscript, bruk og konfigurasjon

7.6.1. Hvordan fungerer System V Oppstartsskripter?

Linux bruker en spesiell oppstartsprosedyre kalt SysVinit som er basert på et konsept med kjøringsnivåer. Det kan være ganske forskjellig fra ett system til et annet, så det kan ikke antas at fordi ting fungerte i en bestemt Linux distribusjon, skulle de også fungere i LFS. LFS har sin egen måte å gjøre ting på, men den respekterer allment aksepterte standarder.

SysVinit (som vil bli referert til som "init" fra nå av) fungerer ved hjelp av kjøreordninger. Det er syv (nummerert 0 til 6) kjøringsnivåer (faktisk er det flere kjøringsnivåer, men de er for spesielle tilfeller og brukes vanligvis ikke. Se init(8) for mer informasjon), og hver av dem tilsvarer handlingene datamaskinen skal utføre når den starter. Standard kjøringsnivå er 3. Her er beskrivelsene av de forskjellige kjøringsnivåene når de implementeres:

0: stopp datamaskinen
1: enkeltbrukermodus
2: flerbrukermodus uten nettverk
3: flerbrukermodus med nettverk
4: reservert for tilpasning, ellers gjør den det samme som 3
5: samme som 4, det brukes vanligvis til GUI-pålogging (som Xs xdm eller KDEs kdm)
6: Start datamaskinen på nytt


7.6.2. Konfigurere Sysvinit

Under kjernelinitialiseringen er det første programmet som kjøres enten spesifisert på kommandolinjen eller som standard init. Dette programmet leser initialiseringsfilen /etc/inittab. Opprett denne filen med:

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

 

id:3:initdefault:

 

si::sysinit:/etc/rc.d/init.d/rc S

 

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

 

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

 

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

 

# End /etc/inittab
EOF

En forklaring på denne initialiseringsfilen er på man siden for inittab. For LFS er nøkkelkommandoen som kjøres rc. Initialiseringsfilen ovenfor vil instruere rc om å kjøre alle skriptene som begynner med en S i /etc/rc.d/rcS.d mappen etterfulgt av alle skriptene som begynner med en S i /etc/rc.d/rc ?. d mappen der spørsmålstegnet er spesifisert av initdefault verdien.

Som en bekvemmelighet leser rc skriptet et bibliotek med funksjoner i /lib/lsb/init-functions. Dette biblioteket leser også en valgfri konfigurasjonsfil, /etc/sysconfig/rc.site. Hvilke som helst av systemkonfigurasjonsfilparametrene som er beskrevet i påfølgende seksjoner, kan alternativt plasseres i denne filen, slik at alle systemparametere i denne filen kan konsolideres.

Som en feilsøkingsfunksjon logger funksjonsskriptet også all utdata til /run/var/bootlog. Siden /run mappen er en tmpfs, er denne filen ikke vedvarende på tvers av omstarter, men den er lagt til den mer permanente filen /var/log/boot.log på slutten av oppstartsprosessen.

7.6.2.1. Endring av kjørenivåer

Endring av kjørenivå gjøres med init <kjørenivå>, der <kjørenivå> er kjøringsnivået du vil bruke. For eksempel, for å starte datamaskinen på nytt, kan en bruker skrive init 6 kommandoen, som er et alias for reboot. På samme måte er init 0 et alias for halt kommandoen.

Det er en rekke mapper under /etc/rc.d som ser ut som rc? .D (hvor? Er nummeret på kjørenivået) og rcsysinit.d, som alle inneholder et antall symbolske lenker. Noen begynner med en K, de andre begynner med en S, og alle har to tall som følger den første bokstaven. K betyr å stoppe (kill) en tjeneste og S betyr å starte en tjeneste. Tallene bestemmer rekkefølgen som skriptene kjøres i, fra 00 til 99 - jo lavere nummer, jo tidligere blir det utført. Når init bytter til et annet kjøringsnivå, startes eller stoppes de aktuelle tjenestene, avhengig av valgt nivå.

De virkelige skriptene er i /etc/rc.d/init.d. De gjør selve arbeidet, og symlinkene peker alle mot dem. K-koblinger og S-koblinger peker til samme skript i /etc/rc.d/init.d. Dette er fordi skriptene kan kalles med forskjellige parametere som start, stop, restart, reload, og status. Når det oppdages en K-kobling, kjøres riktig skript med stop argumentet. Når det oppdages en S-kobling, kjøres riktig skript med start argumentet.

Det er ett unntak fra denne forklaringen. Koblinger som starter med et S i katalogene rc0.d og rc6.d vil ikke føre til at noe startes. De vil bli kalt med parameteren stop for å stoppe noe. Logikken bak dette er at når en bruker skal starte på nytt eller stoppe systemet, trenger ingenting å starte. Systemet trenger bare å stoppes.

Dette er beskrivelser av hva argumentene gjør at skriptene gjør:

start
  Tjenesten startes.

stop
  Tjenesten stoppes.

restart
  Tjenesten stoppes og startes deretter på nytt.

reload
   Konfigurasjonen av tjenesten er oppdatert. Denne brukes etter at konfigurasjonsfilen til en tjeneste ble endret, når tjenesten ikke trenger å startes på nytt.

status
   Forteller om tjenesten kjører og med hvilke PIDer.

Du er velkommen til å endre måten oppstartsprosessen fungerer på (tross alt er det ditt eget LFS-system). Filene som er gitt her er et eksempel på hvordan det kan gjøres.

7.6.3. Udev Bootskripter

Inetskriptet /etc/rc.d/init.d/udev starter udevd, utløser eventuelle "coldplug" enheter som allerede er opprettet av kjernen og venter på at alle regler skal fullføres. Skriptet deaktiverer også uevent behandleren fra standard /sbin/hotplug. Dette gjøres fordi kjernen ikke lenger trenger å kalle en ekstern binær. I stedet vil udevd lytte på en netlink socket for hendelser som kjernen reiser.

Initskriptet /etc/rc.d/init.d/udev_retry tar seg av gjenutløsende hendelser for delsystemer hvis regler kan stole på filsystemer som ikke er montert før mountfs skriptet kjøres (spesielt /usr og /var kan forårsake dette). Dette skriptet kjører etter mountfs skriptet, så disse reglene (hvis de utløses på nytt) skal lykkes andre gang. Den er konfigurert fra filen /etc/sysconfig/udev_retry; andre ord i denne filen, bortsett fra kommentarer, betraktes som delsystemnavn som kan utløses på nytt tidspunkt. For å finne delsystemet til en enhet, bruk udevadm info --attribute-walk <enhet> der <enhet> er en absolutt bane i /dev eller /sys som /dev/sr0 eller /sys/ class/rtc.

For informasjon om kjernemodulinnlasting og udev, se Avsnitt 7.3.2.3, “Modulinnlasting”.

7.6.4. Konfigurere systemklokken

setclock skriptet leser tiden fra maskinvareklokken, også kjent som BIOS eller Complementary Metal Oxide Semiconductor (CMOS) -klokken. Hvis maskinvareklokken er satt til UTC, vil dette skriptet konvertere maskinvareklokkens tid til lokal tid ved hjelp av /etc/localtime filen (som forteller hwclock programmet hvilken tidssone brukeren er i). Det er ingen måte å oppdage om maskinvareklokken er satt til UTC eller ikke, så dette må konfigureres manuelt.

setclock kjøres via udev når kjernen oppdager maskinvarefunksjonen ved oppstart. Den kan også kjøres manuelt med stop parameteren for å lagre systemtiden til CMOS klokken.

Hvis du ikke kan huske om maskinvareklokken er satt til UTC eller ikke, kan du finne ut av det ved å kjøre kommandoen hwclock --localtime --show. Dette vil vise hva gjeldende tid er i henhold til maskinvareklokken. Hvis denne tiden samsvarer med hva klokken din er, er maskinvareklokken satt til lokal tid. Hvis utdataen fra hwclock ikke er lokal tid, er sjansen stor for at den er satt til UTC. Bekreft dette ved å legge til eller trekke riktig mengde timer for tidssonen til tiden som vises av hwclock. For eksempel, hvis du for øyeblikket befinner deg i MST-tidssonen, som også er kjent som GMT -0700, kan du legge til syv timer til lokal tid.

Endre verdien på UTC variabelen nedenfor til en verdi på 0(null) hvis maskinvareklokken ikke er satt til UTC

.Opprett en ny fil /etc/sysconfig/clock ved å kjøre følgende:

cat > /etc/sysconfig/clock << "EOF"

# Begin /etc/sysconfig/clock

 

UTC=1

 

# Set this to any options you might need to give to hwclock,
# such as machine hardware clock type for Alphas.
CLOCKPARAMS=

 

# End /etc/sysconfig/clock
EOF

Et godt hint som forklarer hvordan du skal håndtere tid på LFS, er tilgjengelig på http://www.linuxfromscratch.org/hints/downloads/files/time.txt. Det forklarer spørsmål som tidssoner, UTC og TZ miljøvariabelen.

Parameterne CLOCKPARAMS og UTC kan alternativt settes i filen /etc/sysconfig/rc.site.

7.6.5. Konfigurere Linux konsollen

Denne delen diskuterer hvordan du konfigurerer console startskriptet som setter opp tastatur oppsettet, konsollfonten og konsollkjerneloggnivået. Hvis ikke-ASCII-tegn (f.eks. Copyright-tegnet, det britiske pundskiltet og eurosymbolet) ikke vil bli brukt, og tastaturet er et amerikansk, kan mye av denne delen hoppes over. Uten konfigurasjonsfilen (eller tilsvarende innstillinger i rc.site), vil console startsskriptet ikke gjøre noe.

console skriptet leser /etc/sysconfig/console filen for konfigurasjonsinformasjon. Bestem deg for hvilket tastatur og skjermskrifttype som skal brukes. Ulike språkspesifikke HOWTO-er kan også hjelpe med dette, se http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. Hvis du fortsatt er i tvil, kan du se i katalogene /usr/share/keymaps og /usr/share/consolefonts for gyldige tastekart og skjermskrifter. Les manualsider for loadkeys(1) og setfont(8) for å finne de riktige argumentene for disse programmene.

/etc/sysconfig/console filen skal inneholde linjer i formen: VARIABLE="verdi". Følgende variabler gjenkjennes:

LOGLEVEL
  Denne variabelen spesifiserer loggnivået for kjernemeldinger som sendes til konsollen som angitt av dmesg. Gyldige nivåer er fra "1" (ingen meldinger) til "8". Standardnivået er "7".

KEYMAP
  Denne variabelen spesifiserer argumentene for loadkeys programmet, vanligvis navnet på tastatur oppsettet som skal lastes inn, f.eks. “It”. Hvis denne variabelen ikke er angitt, vil ikke oppstartsskriptet kjøre loadkeys programmet, og standard tastaturoppsett vil bli brukt. Merk at noen få tastaturoppsett har flere versjoner med samme navn (cz og dens varianter i qwerty/ og qwertz/, es i olpc/ og qwerty/, og trf i fgGIod/ og qwerty/). I disse tilfellene bør også hovedkatalogen spesifiseres (f.eks. Qwerty/es) for å sikre at riktig tastaturoppsett lastes inn.

KEYMAP_CORRECTIONS
  Denne (sjelden brukte) variabelen spesifiserer argumentene for det andre kallet til loadkeys programmet. Dette er nyttig hvis tastatur oppsettet ikke er tilfredsstillende og en liten justering må gjøres. Hvis du for eksempel vil ta med Euro-tegnet i et tastaturoppsett som normalt ikke har det, setter du denne variabelen til “euro2”.

FONT
  Denne variabelen spesifiserer argumentene for setfont programmet. Vanligvis inkluderer dette skriftnavnet, "-m" og navnet på applikasjonens tegnkart som skal lastes inn. For eksempel, for å laste fonten “lat1-16” sammen med “8859-1” applikasjonstegnkartet (slik det er passende i USA), sett denne variabelen til “lat1-16 -m 8859-1”. I UTF-8 modus bruker kjernen applikasjonstegnkartet for konvertering av sammensatte 8-biters tastekoder i tastatur oppsettet til UTF-8, og argumentet til "-m" -parameteren bør derfor settes til kodingen av de sammensatte tastaturkodene i tastaturet.

UNICODE
  Sett denne variabelen til “1”, “yes” eller “true” for å sette konsollen i UTF-8 modus. Dette er nyttig i UTF-8 baserte lokaliteter og er skadelig ellers.

LEGACY_CHARSET
  For mange tastaturoppsett er det ikke Unicode tastaturoppsett i Kbd pakken. console startskriptet konverterer et tilgjengelig tastaturoppsett til UTF-8 i farten hvis denne variabelen er satt til koding av det tilgjengelige ikke-UTF-8 tastatur oppsettet.

cat > /etc/sysconfig/console << "EOF"

# Begin /etc/sysconfig/console

 

KEYMAP="pl2"
FONT="lat2a-16 -m 8859-2"

 

# End /etc/sysconfig/console
EOF

cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console

 

KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
UNICODE="1"

 

# End /etc/sysconfig/console
EOF

cat > /etc/sysconfig/console << "EOF"

# Begin /etc/sysconfig/console

 

UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="LatArCyrHeb-16"

 

# End /etc/sysconfig/console
EOF

cat > /etc/sysconfig/console << "EOF"

# Begin /etc/sysconfig/console

 

UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="cyr-sun16"

 

# End /etc/sysconfig/console
EOF

cat> / etc / sysconfig / console << "EOF"

# Begin /etc/sysconfig/console

 

UNICODE = "1"
KEYMAP = "de-latin1"
KEYMAP_CORRECTIONS = "euro2"
LEGACY_CHARSET = "iso-8859-15"
FONT = "LatArCyrHeb-16 -m 8859-15"

 

# End /etc/sysconfig/console
EOF

Filen /etc/sysconfig/console kontrollerer bare lokalisering av Linux tekstkonsoll. Det har ingenting å gjøre med å angi riktig tastaturoppsett og terminalfonter i X Window System, med ssh økter eller med en seriell konsoll. I slike situasjoner gjelder ikke begrensningene nevnt i de to siste listeelementene ovenfor.

7.6.6. Opprette filer ved oppstart

Noen ganger er det ønskelig å opprette filer ved oppstart. For eksempel kan katalogen /tmp/.ICE-unix være ønsket. Dette kan gjøres ved å opprette en oppføring i konfigurasjonsskriptet /etc/sysconfig/createfiles. Formatet på denne filen er innebygd i kommentarene til standardkonfigurasjonsfilen.

7.6.7. Konfigurere sysklogd skriptet

Sysklogd skriptet påkaller syslogd programmet som en del av System V initialisering. Alternativet -m 0 deaktiverer det periodiske tidsstempelmerket som syslogd skriver til loggfilene hvert 20. minutt som standard. Hvis du vil slå på dette periodiske tidsstempelmerket, kan du redigere /etc/sysconfig/rc.site og definere variabelen SYSKLOGD_PARMS til ønsket verdi. For eksempel, for å fjerne alle parametere, sett variabelen til en nullverdi:

SYSKLOGD_PARMS=

Se man syslogd for flere alternativer.

7.6.8. Rc.site filen

Den valgfrie /etc/sysconfig/rc.site filen inneholder innstillinger som automatisk angis for hvert SystemV-oppstartsskript. Det kan alternativt angi verdiene som er angitt i hostname, console og clock filene i /etc/sysconfig/ mappen. Hvis de tilknyttede variablene er tilstede i både disse separate filene og rc.site, har verdiene i de skriptspesifikke filene forrang.

rc.site inneholder også parametere som kan tilpasse andre aspekter av oppstartsprosessen. Hvis du setter inn IPROMPT variabelen, blir det mulig å kjøre oppstartskript selektivt. Andre alternativer er beskrevet i filkommentarene. Standardversjonen av filen er som følger:

# rc.site
# Optional parameters for boot scripts.

 

# Distro Information
# These values, if specified here, override the defaults
#DISTRO="Linux From Scratch" # The distro name
#DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
#DISTRO_MINI="LFS" # Short name used in filenames for distro config

 

# Define custom colors used in messages printed to the screen

 

# Please consult `man console_codes` for more information
# under the "ECMA-48 Set Graphics Rendition" section
#
# Warning: when switching from a 8bit to a 9bit font,
# the linux console will reinterpret the bold (1;) to
# the top 256 glyphs of the 9bit font. This does
# not affect framebuffer consoles

 

# These values, if specified here, override the defaults
#BRACKET="\\033[1;34m" # Blue
#FAILURE="\\033[1;31m" # Red
#INFO="\\033[1;36m" # Cyan
#NORMAL="\\033[0;39m" # Grey
#SUCCESS="\\033[1;32m" # Green
#WARNING="\\033[1;33m" # Yellow

 

# Use a colored prefix
# These values, if specified here, override the defaults
#BMPREFIX=" "
#SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} "
#FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
#WARNING_PREFIX="${WARNING} *** ${NORMAL} "

 

# Manually seet the right edge of message output (characters)
# Useful when resetting console font during boot to override
# automatic screen width detection
#COLUMNS=120

 

# Interactive startup
#IPROMPT="yes" # Whether to display the interactive boot prompt
#itime="3" # The amount of time (in seconds) to display the prompt

 

# The total length of the distro welcome string, without escape codes
#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"

 

# The total length of the interactive string, without escape codes
#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"

# Set scripts to skip the file system check on reboot
#FASTBOOT=yes

 

# Skip reading from the console
#HEADLESS=yes

 

# Write out fsck progress if yes
#VERBOSE_FSCK=no

 

# Speed up boot without waiting for settle in udev
#OMIT_UDEV_SETTLE=y

 

# Speed up boot without waiting for settle in udev_retry
#OMIT_UDEV_RETRY_SETTLE=yes

 

# Skip cleaning /tmp if yes
#SKIPTMPCLEAN=no

# For setclock


#UTC=1
#CLOCKPARAMS=

 

# For consolelog (Note that the default, 7=debug, is noisy)
#LOGLEVEL=7

 

# For network
#HOSTNAME=mylfs

 

# Delay between TERM and KILL signals at shutdown
#KILLDELAY=3

 

# Optional sysklogd parameters
#SYSKLOGD_PARMS="-m 0"

 

# Console parameters
#UNICODE=1
#KEYMAP="de-latin1"
#KEYMAP_CORRECTIONS="euro2"
#FONT="lat0-16 -m 8859-15"
#LEGACY_CHARSET=

 

7.6.8.1. Tilpasse Boot og Shutdown skript

LFS oppstartsskriptene starter og stenger ned et system på en ganske effektiv måte, men det er noen få tilpasninger du kan lage i rc.site filen for å forbedre hastigheten enda mer og for å justere meldinger i henhold til dine preferanser. For å gjøre dette, juster innstillingene i /etc/sysconfig/rc.site filen ovenfor.

Forrige Hjem Neste
7. Systemkonfigurasjon

7.7. Oppstartsfiler for Bash Shell

Skallprogrammet /bin/bash (heretter referert til som "skallet") bruker en samling oppstartsfiler for å skape et miljø å kjøre i. Hver fil har en spesifikk bruk og kan påvirke påloggings- og interaktive miljøer annerledes. Filene i /etc mappen inneholder globale innstillinger. Hvis det finnes en tilsvarende fil i hjemmemappen, kan den overstyre de globale innstillingene.

Et interaktivt påloggingsskall startes etter en vellykket pålogging ved hjelp av /bin/login, ved å lese /etc/passwd filen. Et interaktivt skall som ikke er pålogget, startes på kommandolinjen (f.eks. [ledetekst]$/bin/bash). Et ikke-interaktivt skall er vanligvis tilstede når et skallskript kjører. Det er ikke-interaktivt fordi det behandler et skript og ikke venter på brukerinndata mellom kommandoene.

For mer informasjon, se info bash under delen Bash Startup Files and Interactive Shells.

Filene /etc/profile og ~ /.bash_profile leses når skallet påkalles som et interaktivt påloggingsskall.

Basen /etc/profile nedenfor angir noen miljøvariabler som er nødvendige for morsmålsstøtte. Å sette dem riktig resulterer i:

Erstatt <ll> nedenfor med tobokstavskoden for ønsket språk (f.eks. "en") og <CC> med tobokstavskoden for det aktuelle landet (f.eks. "GB"). <charmap> bør erstattes med det kanoniske karakter oppsettet for det valgte stedet. Valgfrie modifikatorer som “@euro” kan også være til stede.

Listen over alle regionaldata som støttes av Glibc kan fås ved å kjøre følgende kommando:

locale -a

Karakterkart kan ha en rekke aliaser, for eksempel blir “ISO-8859-1” også referert til som “iso8859-1” og “iso88591”. Noen applikasjoner kan ikke håndtere de forskjellige synonymer riktig (for eksempel kreve at "UTF-8" er skrevet som "UTF-8", ikke "utf8"), så det er tryggest i de fleste tilfeller å velge det kanoniske navnet for en bestemt region. For å bestemme det kanoniske navnet, kjør følgende kommando, der <locale name> er utdata gitt av locale -a for din foretrukne region ("en_GB.iso88591" i vårt eksempel)

LC_ALL=<locale name> locale charmap

For “en_GB.iso88591” regionen, skrives kommandoen ovenfor ut slik:

ISO-8859-1

Dette resulterer i den endelige innstillingen for "en_GB.ISO-8859-1". Det er viktig at lokaliteten som ble funnet ved hjelp av heuristikken ovenfor, testes før den legges til Bash oppstartsfilene:

LC_ALL=<locale name> locale language
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale int_curr_symbol
LC_ALL=<locale name> locale int_prefix

Ovennevnte kommandoer skal skrive ut språknavnet, tegnkodingen som brukes av regionen, den lokale valutaen og prefikset før telefonnummeret for å ringe til landet. Hvis noen av kommandoene ovenfor mislykkes med en melding som ligner den som er vist nedenfor, betyr dette at regionaldataene dine ikke ble installert i kapittel 6 eller ikke støttes av standardinstallasjonen av Glibc.

locale: Cannot set LC_* to default locale: No such file or directory

Hvis dette skjer, bør du enten installere ønsket regionaldata ved hjelp av kommandoen localedef, eller vurdere å velge en annen region. Ytterligere instruksjoner antar at det ikke er slike feilmeldinger fra Glibc.

Noen pakker utover LFS kan også mangle støtte for den valgte regionen. Et eksempel er X biblioteket (en del av X Window System), som viser følgende feilmelding hvis regionaldataen ikke samsvarer nøyaktig med karakterkartet i de interne filene:

Warning: locale not supported by Xlib, locale set to C

I flere tilfeller forventer Xlib at tegnkartet vil bli oppført i store bokstaver med kanoniske streker. For eksempel "ISO-8859-1" i stedet for "iso88591". Det er også mulig å finne en passende spesifikasjon ved å fjerne karakterkart delen av stedsspesifikasjonen. Dette kan kontrolleres ved å kjøre locale charmap kommandoen på begge språkene. For eksempel må man endre "de_DE.ISO-8859-15@euro" til "de_DE@euro" for å få dette stedet anerkjent av Xlib.

Andre pakker kan også fungere feil (men viser ikke nødvendigvis noen feilmeldinger) hvis regionaldataen ikke oppfyller deres forventninger. I slike tilfeller kan det være nyttig informasjon å undersøke hvordan andre Linux distribusjoner støtter regionaldataen din.

Når de riktige regionaldataene er bestemt, oppretter du /etc/profile filen:

cat > /etc/profile << "EOF"
# Begin /etc/profile

 

export LANG=<ll>_<CC>.<karakterkart><@modifikatorer>

 

# End /etc/profile
EOF

Lokalitetene "C" (standard) og "en_US" (den anbefalte for engelske brukere i USA) er forskjellige. “C” bruker US-ASCII 7-bit tegnsett, og behandler byte med høyt bit sett som ugyldige tegn. Derfor erstatter f.eks. ls kommandoen dem med spørsmålstegn i det stedet. Et forsøk på å sende e-post med slike tegn fra Mutt eller Pine resulterer også i at ikke-RFC-samsvarende meldinger blir sendt (tegnsettet i utgående e-post er angitt som "ukjent 8-bit"). Så du kan bare bruke "C" regionaldataen hvis du er sikker på at du aldri trenger 8-biters tegn.

UTF-8 baserte regionaldata støttes ikke godt av noen programmer. Arbeidet pågår for å dokumentere og, hvis mulig, løse slike problemer, se http://www.linuxfromscratch.org/blfs/view/9.1/introduction/locale-issues.html.

Forrige Hjem Neste
7. Systemkonfigurasjon

7.8. Opprette /etc/inputrc filen

Inputrc filen er konfigurasjonsfilen for Readline biblioteket, som gir redigeringsfunksjoner mens brukeren angir en linje fra terminalen. Det fungerer ved å oversette tastaturinnganger til spesifikke handlinger. Readline brukes av Bash og de fleste andre skall, så vel som mange andre applikasjoner.

De fleste trenger ikke brukerspesifikk funksjonalitet, så kommandoen nedenfor lager en global /etc/inputrc brukt av alle som logger på. Hvis du senere bestemmer at du må overstyre standardene per bruker, kan du opprette en .inputrc fil i brukerens hjemmekatalog med de modifiserte tilordningene.

For mer informasjon om hvordan du redigerer inputrc filen, se info bash under Readline Init File delen. info readline er også en god informasjonskilde.

Nedenfor er en generell global inputrc sammen med kommentarer for å forklare hva de forskjellige alternativene gjør. Merk at kommentarer ikke kan være på samme linje som kommandoer. Opprett filen ved hjelp av følgende kommando:

cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <roryo@roryo.dynup.net>

 

# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off

 

# Enable 8bit input
set meta-flag On
set input-meta On

 

# Turns off 8th bit stripping
set convert-meta Off

 

# Keep the 8th bit for display
set output-meta On

 

# none, visible or audible
set bell-style none

 

# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
"\eOd": backward-word
"\eOc": forward-word

 

# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

 

# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

 

# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line

 

# End /etc/inputrc
EOF

Forrige Hjem Neste
7. Systemkonfigurasjon

7.9. Opprette /etc/shell filen

shells filen inneholder en liste over innloggingsskaller på systemet. Programmer bruker denne filen til å avgjøre om et skall er gyldig. For hvert skall skal det være en enkelt linje som består av skallets bane, i forhold til roten til katalogstrukturen (/).

For eksempel blir denne filen konsultert av chsh for å avgjøre om en uprivilegert bruker kan endre påloggingsskallet for sin egen konto. Hvis kommandonavnet ikke er oppført, vil brukeren nektes endring.

Det er et krav for applikasjoner som GDM som ikke fyller sidenettleseren hvis den ikke finner /etc/shell, eller FTP nisser som tradisjonelt ikke tillater tilgang til brukere med skall som ikke er inkludert i denne filen.

cat > /etc/shells << "EOF"

# Begin /etc/shells

 

/bin/sh
/bin/bash

 

# End /etc/shells
EOF

Forrige Hjem Neste

8. Gjør LFS systemet oppstartbart

Det er på tide å gjøre LFS systemet oppstartbart.

8. Gjør LFS systemet oppstartbart

8.1. Introduksjon

Det er på tide å gjøre LFS systemet oppstartbart. Dette kapittelet diskuterer å lage en fstab fil, bygge en kjerne for det nye LFS systemet, og installere GRUB oppstartslaster slik at LFS systemet kan velges for oppstart ved oppstart.

Forrige Hjem Neste
8. Gjør LFS systemet oppstartbart

8.2. Opprette /etc/fstab filen

/etc/fstab filen brukes av noen programmer for å bestemme hvor filsystemer skal monteres som standard, i hvilken rekkefølge og hvilke som må kontrolleres (for integritetsfeil) før montering. Lag en ny filsystemtabell slik:

cat > /etc/fstab << "EOF"

# Begin /etc/fstab

 

# file system         mount-point         type        options                      dump       fsck
#                                                                                                                          order

 

/dev/<xxx>          /                           <fff>        defaults                       1            1
/dev/<yyy>          swap                    swap        pri=1                           0            0
proc                     /proc                    proc         nosuid,noexec,nodev  0            0
sysfs                    /sys                       sysfs         nosuid,noexec,nodev  0            0
devpts                /dev/pts                devpts      gid=5,mode=620        0            0
tmpfs                 /run                       tmpfs        defaults                       0            0
devtmpfs           /dev                      devtmpfs   mode=0755,nosuid    0            0

 

# End /etc/fstab
EOF

Erstatt <xxx>, <yyy> og <fff> med verdiene som er passende for systemet, for eksempel sda2, sda5 og ext4. For detaljer om de seks feltene i denne filen, se man 5 fstab.

Filsystemer med MS-DOS eller Windows opprinnelse (dvs. vfat, ntfs, smbfs, cifs, iso9660, udf) trenger et spesielt alternativ, utf8, for at ikke-ASCII-tegn i filnavn skal tolkes riktig. For lokaliteter som ikke er UTF-8, bør verdien av iocharset settes til å være den samme som tegnsettet til lokaliteten, justert på en slik måte at kjernen forstår det. Dette fungerer hvis den relevante definisjonen av tegnsett (funnet under Filsystemer -> Innfødt språkstøtte når du konfigurerer kjernen) er blitt samlet inn i kjernen eller bygget som en modul. Imidlertid, hvis tegnsettet til lokaliteten er UTF-8, vil det tilsvarende alternativet iocharset=utf8 gjøre filsystemet sensitiv mellom store og små bokstaver. For å fikse dette, bruk det spesielle alternativet utf8 i stedet for iocharset=utf8, for UTF-8-lokaler. Alternativet "codepage" er også nødvendig for vfat- og smbfs-filsystemer. Den bør settes til kodenummeret som brukes under MS-DOS i ditt land. For eksempel, for å montere USB-flash-stasjoner, vil en ru_RU.KOI8-R bruker trenge følgende i alternativdelen av monteringslinjen i /etc/fstab:

noauto,user,quiet,showexec,codepage=866,iocharset=koi8r

Det tilsvarende alternativfragmentet for ru_RU.UTF-8 brukere er:

noauto,user,quiet,showexec,codepage=866,utf8

Merk at bruk av iocharset er standard for iso8859-1 (som holder filsystemets sensitiv mellom store og små bokstaver), og utf8 alternativet ber kjernen om å konvertere filnavnene ved hjelp av UTF-8 slik at de kan tolkes i UTF-8 lokaliteten.

Det er også mulig å spesifisere standard kodeside og iocharset verdier for noen filsystemer under kjernekonfigurasjon. De relevante parametrene heter "Standard NLS Option" (CONFIG_NLS_DEFAULT), "Standard Remote NLS Option" (CONFIG_SMB_NLS_DEFAULT), "Standard codepage for FAT" (CONFIG_FAT_DEFAULT_CODEPAGE), og "Standard iocharset for FAT" (CONFIG_FAT_DEFAULT_). Det er ingen måte å spesifisere disse innstillingene for ntfs filsystemet på kjernekompileringstidspunktet.

Det er mulig å gjøre ext3 filsystemet pålitelig på tvers av strømbrudd for noen harddisktyper. For å gjøre dette, legg til barrier=1 monteringsalternativ til riktig oppføring i /etc/fstab. For å sjekke om diskstasjonen støtter dette alternativet, kjør hdparm på den aktuelle diskstasjonen. For eksempel hvis:

hdparm -I /dev/sda | grep NCQ

returnerer ikke-tom utdata, så støttes alternativet.

Merk: Logiske volumadministrasjons (LVM) -baserte partisjoner kan ikke bruke alternativet barrier.

Forrige Hjem Neste
8. Gjør LFS systemet oppstartbart

8.3. Linux-5.5.3

Linux pakken inneholder Linux kjernen.

 

Omtrentlig byggetid: 4.4 - 66.0 SBU (typisk omtrent 6 SBU)

Nødvendig diskplass: 960 - 4250 MB (typisk omtrent 1100 MB)

8.3.1. Installasjon av kjernen

Å bygge kjernen innebærer noen få trinn — konfigurasjon, kompilering og installasjon. Les README filen i kjernekildetreet for alternative metoder for måten denne boken konfigurerer kjernen på.

Forbered deg på kompilering ved å kjøre følgende kommando:

make mrproper

Dette sikrer at kjernetreet er helt rent. Kjerneteamet anbefaler at denne kommandoen utstedes før hver kjernekompilering. Ikke stol på at kildetreet er rent etter utpakking.

Konfigurer kjernen via et menystyrt grensesnitt. For generell informasjon om kjernekonfigurasjon, se http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt. BLFS har litt informasjon om spesifikke kjernekonfigurasjonskrav til pakker utenfor LFS på http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index. Mer informasjon om konfigurering og bygging av kjernen finner du på http://www.kroah.com/lkn/

Et godt utgangspunkt for å konfigurere kjernekonfigurasjonen er å kjøre make defconfig. Dette vil sette basiskonfigurasjonen til en god tilstand som tar hensyn til din nåværende systemarkitektur.

Sørg for å aktivere/deaktivere/angi følgende funksjoner, ellers fungerer ikke systemet riktig eller starter opp i det hele tatt:

Device Drivers --->
    Generic Driver Options --->
       [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
       [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]

Kernel hacking --->
           Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER]

Det er flere andre alternativer som kan være ønsket, avhengig av kravene til systemet. For en liste over alternativer som er nødvendige for BLFS pakker, se BLFS indeksen over kjernens innstillinger (http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index).

Hvis vertsmaskinvaren bruker UEFI, bør 'make defconfig' ovenfor automatisk legge til noen EFI-relaterte kjernealternativer.

For å tillate at LFS kjernen startes fra vertsens UEFI oppstartsmiljø, må kjernen din ha valgt dette alternativet:

Processor type and features --->
      [*]      EFI stub support [CONFIG_EFI_STUB]

En fullstendig beskrivelse av administrering av UEFI-miljøer fra LFS er dekket av hintet lfs-uefi.txt på http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt.

Begrunnelsen for konfigurasjonselementene ovenfor:

Support for uevent helper
    Å ha dette alternativet kan forstyrre enhetsadministrasjonen når du bruker Udev/Eudev.

Maintain a devtmpfs
    Dette vil skape automatiserte enhetsnoder som befolkes av kjernen, selv uten at Udev kjører. Udev kjører deretter på toppen av dette, administrerer tillatelser og legger til symlinker. Dette konfigurasjonselementet er påkrevd for alle brukere av Udev/Eudev.

make menuconfig

Betydningen av valgfrie make miljøvariabler:

LANG=<host_LANG_value> LC_ALL=
   Dette etablerer lokalinnstillingen til den som brukes på verten. Dette kan være nødvendig for en riktig menukonfig ncurses-grensesnittlinjetegning på en UTF-8 linux tekstkonsoll. Hvis du bruker det, må du erstatte <host_LANG_value> med verdien av $LANG variabelen fra verten din. Du kan alternativt bruke vertsverdien $LC_ALL eller $LC_CTYPE i stedet.

Alternativt kan make oldconfig være mer passende i noen situasjoner. Se README filen for mer informasjon.

Hvis ønskelig, hopp over kjernekonfigurasjonen ved å kopiere kjernekonfigurasjonsfilen .config fra vertssystemet (forutsatt at den er tilgjengelig) til den utpakkede linux-5.5.3 mappen. Vi anbefaler imidlertid ikke dette alternativet. Det er ofte bedre å utforske alle konfigurasjonsmenyene og opprette kjernekonfigurasjonen fra bunnen av.

Kompiler kjernebildet og modulene:

make

Hvis du bruker kjernemoduler, kan det være nødvendig med modulkonfigurasjon i /etc/modprobe.d. Informasjon om moduler og kjernekonfigurasjon finner du i Avsnitt 7.3, “Oversikt over enhets og modulhåndtering” og i kjernedokumentasjonen i linux-5.5.3/Documentation. Modprobe.d (5) kan også være av interesse.

Med mindre modulstøtte er deaktivert i kjernekonfigurasjonen, installerer du modulene med:

make modules_install

Etter at kjernekompilering er fullført, kreves det flere trinn for å fullføre installasjonen. Noen filer må kopieres til /boot mappen.

Hvis vertssystemet har en egen /boot partisjon, bør filene som er kopiert nedenfor gå dit. Den enkleste måten å gjøre det på er å binde /boot på verten (utenfor chroot) til /mnt/lfs/boot før du fortsetter. Som rotbruker i vertssystemet:

mount --bind /boot /mnt/lfs/boot

Stien til kjernebildet kan variere avhengig av plattformen som brukes. Filnavnet nedenfor kan endres for å passe din smak, men stammen til filnavnet skal være vmlinuz for å være kompatibelt med det automatiske oppsettet av oppstartsprosessen som er beskrevet i neste avsnitt. Følgende kommando forutsetter en x86-arkitektur:

cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.5.3-lfs-9.1

System.map er en symbolfil for kjernen. Det kartlegger funksjonsinngangspunktene til hver funksjon i kjernen API, samt adressene til kjernedatastrukturene for den kjørende kjernen. Den brukes som en ressurs når man undersøker kjerneproblemer. Utsted følgende kommando for å installere filen:

cp -iv System.map /boot/System.map-5.5.3

Kjernekonfigurasjonsfilen .config produsert av make menuconfig trinnet ovenfor inneholder alle konfigurasjonsvalgene for kjernen som nettopp ble kompilert. Det er en god ide å beholde denne filen for fremtidig referanse:

cp -iv .config /boot/config-5.5.3

Installer dokumentasjonen for Linux-kjernen:

install -d /usr/share/doc/linux-5.5.3
cp -r Documentation/* /usr/share/doc/linux-5.5.3

Det er viktig å merke seg at filene i kjernekildekatalogen ikke eies av root. Hver gang en pakke pakkes ut som bruker root (som vi gjorde i chroot), har filene bruker- og gruppe-ID-er for hva de var på pakkerens datamaskinen. Dette er vanligvis ikke et problem for andre pakker som skal installeres fordi kildetreet fjernes etter installasjonen. Imidlertid er Linux kildetreet ofte beholdt i lang tid. På grunn av dette er det en sjanse for at uansett hvilken bruker-ID pakkeren brukte blir den tildelt noen på maskinen. Denne personen vil da ha skrivetilgang til kjernekilden.

I mange tilfeller må konfigurasjonen av kjernen oppdateres for pakker som blir installert senere i BLFS. I motsetning til andre pakker er det ikke nødvendig å fjerne kjernekildetreet etter at den nybygde kjernen er installert.

Hvis kjernekildetreet skal beholdes, kjør chown -R 0: 0 i linux-5.5.3 mappen for å sikre at alle filene eies av bruker root.

Noe kjernedokumentasjon anbefaler at du oppretter en symlenke fra /usr/src/linux som peker til kjernekildekatalogen. Dette er spesifikt for kjerner før 2.6 serien og må ikke opprettes på et LFS system, da det kan forårsake problemer for pakker du kanskje ønsker å bygge når ditt LFS system er ferdig.

Deklarasjonene i systemets include mappe (/usr/include) skal alltid være de som Glibc ble kompilert mot, det vil si de rensede deklarasjonene som er installert i seksjon 6.7, “Linux-5.5.3 API Deklarasjoner”. Derfor bør de aldri erstattes av verken de rå kjernedeklarasjonene eller andre kjerne rensede deklarasjoner.

8.3.2. Konfigurere belastningsrekkefølge for Linux moduler

Mesteparten av tiden lastes Linux moduler automatisk, men noen ganger trengs det en viss rekkefølge. Programmet som laster inn moduler, modprobe eller insmod, bruker /etc/modprobe.d/usb.conf til dette formålet. Denne filen må opprettes slik at hvis USB driverne (ehci_hcd, ohci_hcd og uhci_hcd) er bygget som moduler, blir de lastet inn i riktig rekkefølge. ehci_hcd må lastes inn før ohci_hcd og uhci_hcd for å unngå at en advarsel sendes ut ved oppstart.

Opprett en ny fil /etc/modprobe.d/usb.conf ved å kjøre følgende:

install -v -m755 -d /etc/modprobe.d

cat > /etc/modprobe.d/usb.conf << "EOF"
# Begin /etc/modprobe.d/usb.conf

 

install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true

 

# End /etc/modprobe.d/usb.conf
EOF

8.3.3. Innholdet i kjernen

Installerte filer: config-5.5.3, vmlinuz-5.5.3-lfs-9.1, og System.map-5.5.3

Installerte mapper: /lib/modules, /usr/share/doc/linux-5.5.3

 

Kort beskrivelse

config-5.5.3 - Inneholder alle konfigurasjonsvalgene for kjernen

vmlinuz-5.5.3-lfs-9.1 - Motoren til Linux systemet. Når du slår på datamaskinen, er kjernen den første delen av operativsystemet som blir lastet. Den oppdager og initialiserer alle komponenter i datamaskinens maskinvare, og gjør deretter disse komponentene tilgjengelige som et filtre til programvaren og gjør en enkelt CPU til en multitasking maskin som kan kjøre mange programmer tilsynelatende samtidig

System.map-5.5.3 - En liste over adresser og symboler; den tilordner inngangspunkter og adresser til alle funksjonene og datastrukturene i kjernen

Forrige Hjem Neste
8. Gjør LFS systemet oppstartbart

8.4. Bruke GRUB til å sette opp oppstartsprosessen

8.4.1. Introduksjon

Å konfigurere GRUB feil kan gjøre systemet ubrukelig uten en annen oppstartsenhet som en CD-ROM. Denne delen er ikke nødvendig for å starte LFS systemet. Det kan være lurt å endre din nåværende oppstartslaster, f.eks. Grub-Legacy, GRUB2 eller LILO.

Forsikre deg om at en nødstartsdiskett er klar til å "redde" datamaskinen hvis datamaskinen blir ubrukelig (ikke oppstartbar). Hvis du ikke allerede har en oppstartsenhet, kan du opprette en. For at prosedyren nedenfor skal fungere, må du hoppe videre til BLFS og installere xorriso fra libisoburn pakken.

cd /tmp
grub-mkrescue --output=grub-img.iso
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso

For å starte LFS på vertssystemer som har UEFI aktivert, må kjernen være bygget med CONFIG_EFI_STUB kapasiteten beskrevet i forrige avsnitt. Imidlertid kan LFS startes med GRUB2 uten et slikt tillegg. For å gjøre dette må UEFI Mode og Secure Boot funksjonene i vertssystemets BIOS være slått av. For detaljer, se hintet lfs-uefi.txt på http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt.

8.4.2. GRUB navnekonvensjoner

GRUB bruker sin egen navngivningsstruktur for stasjoner og partisjoner i form av (hdn, m), der n er harddisknummeret og m er partisjonsnummeret. Harddisknummeret starter fra null, men partisjonsnummeret starter fra en for normale partisjoner og fem for utvidede partisjoner. Merk at dette er forskjellig fra tidligere versjoner der begge tallene startet fra null. For eksempel er partisjon sda1 (hd0,1) til GRUB og sdb3 er (hd1,3). I motsetning til Linux anser GRUB ikke CD-ROM-stasjoner for å være harddisker. Hvis du for eksempel bruker en CD på hdb og en annen harddisk på hdc, vil den andre harddisken fremdeles være (hd1).

8.4.3. Sette opp konfigurasjonen

GRUB fungerer ved å skrive data til det første fysiske sporet på harddisken. Dette området er ikke en del av noe filsystem. Programmene der får tilgang til GRUB moduler i oppstartspartisjonen. Standardplasseringen er /boot/grub/.

Plasseringen til oppstartspartisjonen er et valg av brukeren som påvirker konfigurasjonen. En anbefaling er å ha en egen liten (foreslått størrelse er 100 MB) partisjon bare for oppstartsinformasjon. På den måten har hver bygging, enten LFS eller en kommersiell distro, tilgang til de samme oppstartsfilene, og tilgang kan gjøres fra hvilket som helst oppstartssystem. Hvis du velger å gjøre dette, må du montere den separate partisjonen, flytte alle filene i den nåværende /boot mappen (f.eks. Linux kjernen du nettopp bygde i forrige seksjon) til den nye partisjonen. Du må da demontere partisjonen og montere den som /boot. Hvis du gjør dette, må du sørge for å oppdatere /etc/fstab.

Å bruke den nåværende lfs partisjonen vil også fungere, men konfigurering for flere systemer er vanskeligere.

Bruk den ovennevnte informasjonen til å bestemme riktig betegnelse for root partisjonen (eller boot partisjonen, hvis en separat brukes). For det følgende eksemplet antas det at root partisjonen (eller separat oppstart) er sda2.

Installer GRUB filene i /boot/grub og sett opp boot sporet:

Følgende kommando overskriver gjeldende oppstartslaster. Ikke kjør kommandoen hvis dette ikke er ønsket, for eksempel hvis du bruker en tredjeparts boot manager til å administrere Master Boot Record (MBR).

grub-install /dev/sda

Hvis systemet er startet opp med UEFI, vil grub-install prøve å installere filer for x86_64-efi målet, men disse filene er ikke installert i kapittel 6. Hvis dette er tilfelle, legg til --target i386-pc til kommandoen ovenfor.

8.4.4. Opprette GRUB konfigurasjonsfilen

Generer /boot/grub/grub.cfg:

cat > /boot/grub/grub.cfg << "EOF"

# Begin /boot/grub/grub.cfg


set default=0
set timeout=5

 

insmod ext2
set root=(hd0,2)

 

menuentry "GNU/Linux, Linux 5.5.3-lfs-9.1" {
                linux /boot/vmlinuz-5.5.3-lfs-9.1 root=/dev/sda2 ro
}
EOF

Fra GRUBs perspektiv er kjernefilene relativt til partisjonen som brukes. Hvis du brukte en egen /boot partisjon, fjern /boot fra Linux linjen ovenfor. Du må også endre den angitte set root linjen for å peke på boot partisjonen.

GRUB er et ekstremt kraftig program, og det gir et enormt antall muligheter for oppstart fra et bredt utvalg av enheter, operativsystemer og partisjonstyper. Det er også mange muligheter for tilpasning, for eksempel grafiske sprutskjermer, avspilling av lyder, musinngang osv. Detaljene i disse alternativene ligger utenfor omfanget av denne introduksjonen.

Det er en kommando, grub-mkconfig, som kan skrive en konfigurasjonsfil automatisk. Den bruker et sett med skript i /etc/grub.d/ og vil ødelegge eventuelle tilpasninger du gjør. Disse skriptene er designet primært for ikke-kildedistribusjoner og anbefales ikke for LFS. Hvis du installerer en kommersiell Linux distribusjon, er det stor sjanse for at dette programmet kjøres. Sørg for å sikkerhetskopiere grub.cfg-filen.

Forrige Hjem Neste

9. Slutten

Bra gjort! Det nye LFS systemet er installert!

9. Slutten

9.1. Slutten

Bra gjort! Det nye LFS systemet er installert! Vi ønsker deg mye suksess med ditt skinnende nye spesialbygde Linux system.

Det kan være lurt å lage en /etc/lfs-release fil. Ved å ha denne filen er det veldig enkelt for deg (og for oss hvis du trenger å be om hjelp på et tidspunkt) for å finne ut hvilken LFS versjon som er installert på systemet. Opprett denne filen ved å kjøre:

echo 9.1 > /etc/lfs-release

To filer som beskriver det installerte systemet kan brukes av pakker som skal installeres på systemet, enten i binær form eller ved å bygge dem.

Den første viser statusen til det nye systemet ditt med hensyn til Linux Standards Base (LSB). For å opprette denne filen, kjør:

cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="9.1"
DISTRIB_CODENAME="<your name here>"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF

Den andre inneholder omtrent samme informasjon, og brukes av systemd og noen grafiske skrivebordsmiljøer. For å opprette denne filen, kjør:

cat > /etc/os-release << "EOF"
NAME="Linux From Scratch"
VERSION="9.1"
ID=lfs
PRETTY_NAME="Linux From Scratch 9.1"
VERSION_CODENAME="<your name here>"
EOF

Sørg for å legge til en slags tilpasning for feltene 'DISTRIB_CODENAME' og 'VERSION_CODENAME' for å gjøre systemet unikt.

Forrige Hjem Neste
9. Slutten

9.2. Bli regnet med

Nå som du er ferdig med boka, vil du bli regnet som LFS bruker? Gå til http://www.linuxfromscratch.org/cgi-bin/lfscounter.php og registrer deg som en LFS bruker ved å skrive inn navnet ditt og den første LFS versjonen du har brukt.

La oss starte systemet på nytt inn i LFS nå.

Forrige Hjem Neste
9. Slutten

9.3. Starte systemet på nytt

Nå som all programvaren er installert, er det på tide å starte datamaskinen på nytt. Du bør imidlertid være oppmerksom på noen få ting. Systemet du har opprettet i denne boken er ganske minimalt, og vil sannsynligvis ikke ha funksjonaliteten du trenger for å kunne fortsette fremover. Ved å installere noen ekstra pakker fra BLFS boken mens du fortsatt er i vårt nåværende chroot miljø, kan du være i en mye bedre posisjon for å fortsette når du omstarter din nye LFS installasjon. Her er noen forslag: