Linux fra bunden - Linux From Scratch

Linux fra bunden
Udvikler Gerard Beekmans et al.
OS familie Unix-lignende
Arbejdstilstand Nuværende
Kildemodel Åben kilde
Første udgivelse December 1999 ; 21 år siden ( 1999-12 )
Seneste udgivelse 11.0 / 1. september 2021 ; 39 dage siden ( 2021-09-01 )
Opdateringsmetode Kildebaseret
Pakke manager Ingen (kildebaseret)
Platforme IA-32 , x86-64
Kernel type Monolitisk
Standard
brugergrænseflade
CLI
Licens Creative Commons -licenser og MIT -licens
Officiel hjemmeside www .linuxfromscratch .org

Linux From Scratch ( LFS ) er en type Linux -installation og navnet på en bog skrevet af Gerard Beekmans, og fra maj 2021, hovedsageligt vedligeholdt af Bruce Dubbs. Bogen giver læserne instruktioner om, hvordan man opbygger et Linux -system fra kilde . Bogen er frit tilgængelig fra Linux From Scratch -webstedet.

Projekter under AKU

Linux From Scratch er en måde at installere et fungerende Linux -system ved at bygge alle komponenter i det manuelt. Dette er naturligvis en længere proces end at installere en forhåndskompileret Linux-distribution . Ifølge Linux From Scratch- stedet er fordelene ved denne metode et kompakt, fleksibelt og sikkert system og en større forståelse af de interne funktioner i de Linux-baserede operativsystemer.

For at holde LFS lille og fokuseret blev bogen Beyond Linux From Scratch (BLFS) oprettet, som indeholder instruktioner om, hvordan man videreudvikler det grundlæggende Linux -system, der blev oprettet i LFS. Det indfører og guider læseren gennem tilføjelser til systemet, herunder X Window System , desktop-miljøer ( KDE , GNOME , Xfce , LXDE ), produktivitetssoftware , web-browsere , programmeringssprog og værktøjer, multimedie software og netværksstyring og systemadministration værktøjer . Siden udgivelse 5.0 matcher BLFS -bogversionen LFS -bogversionen.

Bogen Cross Linux From Scratch (CLFS) fokuserer på krydskompilering , herunder kompilering til hovedløse eller integrerede systemer, der kan køre Linux, men mangler de nødvendige ressourcer til at kompilere Linux. CLFS understøtter en bred vifte af processorer og adresserer avancerede teknikker, der ikke er inkluderet i LFS-bogen, f.eks. Cross-build værktøjskæder , multilibrary support (32 & 64-bit biblioteker side om side) og alternative instruktionssætarkitekturer som Itanium , SPARC , MIPS og Alpha .

Linux fra Scratch-projektet understøtter ligesom BitBake også krydskompilerende Linux til ARM- integrerede systemer som Raspberry Pi og BeagleBone .

Bogen Hardened Linux From Scratch (HLFS) fokuserer på sikkerhedsforbedringer såsom hærdet kernel-patches, obligatoriske adgangskontrolpolitikker , stack-smashing-beskyttelse og randomisering af adresserumslayout . Udover hovedformålet med at skabe et sikkerhedsfokuseret operativsystem havde HLFS det sekundære mål at være et sikkerhedsundervisningsværktøj. Det er ikke blevet opdateret siden 2011.

Automatiseret Linux From Scratch (ALFS) er et projekt designet til at automatisere processen med at oprette et LFS -system. Det er rettet mod brugere, der har gennemgået LFS- og BLFS -bøgerne flere gange og ønsker at reducere mængden af ​​arbejde. Et sekundært mål er at fungere som en test af LFS- og BLFS -bøgerne ved direkte at udtrække og køre instruktioner fra XML -kilderne til LFS- og BLFS -bøgerne.

Krav og procedure

En ren partition og et fungerende Linux -system med en compiler og nogle væsentlige softwarebiblioteker er påkrævet for at bygge LFS. I stedet for at installere fra et eksisterende Linux -system kan man også bruge en Live CD til at bygge et LFS -system.

Projektet vedligeholdt tidligere Linux From Scratch Live CD'en. LFS Live CD indeholder alle kildepakkerne (kun i den fulde version af Live CD'en), LFS -bogen, automatiserede bygningsværktøjer og (undtagen den minimale Live CD -version) et Xfce GUI -miljø at arbejde i. Den officielle LFS Live CD vedligeholdes ikke længere og kan ikke bruges til at bygge LFS version7 eller nyere. Der er dog to uofficielle builds, der kan bruges til at bygge henholdsvis en 32-bit eller 64-bit kerne og et brugerområde til LFS 7.x.

Først skal der udarbejdes en værktøjskæde bestående af de værktøjer, der bruges til at kompilere LFS, som GCC , glibc , binutils og andre nødvendige hjælpeprogrammer. Derefter skal rodmappen ændres (ved hjælp af chroot ) til værktøjskædens partition for at begynde at bygge det endelige system. En af de første pakker, der skal kompileres, er glibc; derefter skal værktøjskædens linker justeres til at linke mod det nybyggede glibc, så alle andre pakker, der udgør det færdige system, også kan kobles mod det. Under chroot fase, bash er 's hashing funktion slået fra, og den midlertidige toolchain-biblioteket bin flyttet til slutningen af stien. På den måde kommer de nyligt sammensatte programmer først i PATH, og det nye system bygger på sine egne nye komponenter.

Liste over pakker i LFS version 10.1

Komponent Beskrivelse Licens Version
Acl En adgangskontrolliste (ACL) med hensyn til et computerfilsystem er en liste over tilladelser knyttet til et objekt. GNU GPL 2.2.53
Attr Kommandoer til manipulation af filsystemudvidede attributter. GNU GPL 2.4.48
Autokonf Værktøj til fremstilling af konfigurationsscripts til C , C ++ , Fortran , Fortran 77, Erlang , Objective-C- software på Unix-lignende computersystemer. GNU GPL 2,71
Automake Et programmeringsværktøj, der producerer bærbare makefiler til brug af fabrikatet , der bruges i kompilering af software. GNU GPL 1.16.3
Bash En gratis software Unix -shell skrevet til GNU -projektet GNU GPL 5.1
bc bcer en grundlæggende lommeregner (ofte omtalt som bænkberegner), er "et vilkårligt præcisionsberegner -sprog" med syntaks, der ligner C -programmeringssproget . GNU GPL 3.3.0
Binutils En samling programmeringsværktøjer til manipulation af objektkode i forskellige objektfilformater. GNU GPL 2.36.1
Bison En parser -generator, der er en del af GNU -projektet . Bison konverterer en grammatikbeskrivelse for en kontekstfri grammatik til kildekode til en C , C ++ eller Java- parser. GNU GPL 3.7.5
Bzip2 En gratis og open source tabsfri komprimering algoritme og program udviklet af Julian Seward . BSD-lignende licens 1.0.8
Kontrollere En ramme for test af enheder C . GNU GPL 0,15,2
Coreutils En pakke med GNU- software, der indeholder mange af de grundlæggende værktøjer, såsom cat , ls og rm , der er nødvendige for Unix-lignende operativsystemer . GNU GPL 8,32
DejaGNU En ramme til test af andre programmer. Det har et hovedscript kaldet runtest, der går gennem et bibliotek, der ser på konfigurationsfiler og derefter kører nogle tests med givne kriterier. GNU GPL 1.6.2
Diffutiler Et værktøj til sammenligning af data , der udsender forskellene mellem to filer. GNU GPL 3.7
E2fsprogs e2fsprogs (undertiden kaldet e2fs programmer) er et sæt hjælpeprogrammer til vedligeholdelse af ext2 , ext3 og ext4 filsystemer . GNU GPL 1.46.1
Elfutils En samling værktøjer og biblioteker til at læse, oprette og ændre ELF -binære filer. GNU GPL og GNU LGPL 0,183
Eudev En gaffel udev for at undgå afhængighed af systemets arkitektur. Den resulterende gaffel kaldes eudev, og den gør udev -funktionalitet tilgængelig uden systemd . GNU GPL 3.2.10
Udstationerede En strøm -orienteret XML 1.0 parser bibliotek , skrevet i C . MIT -licens 2.2.10
Forventer Expect er et Unix automatiserings- og testværktøj som en udvidelse til Tcl -scriptsproget til interaktive applikationer som telnet , ftp , passwd , fsck , rlogin , tip , ssh og andre. Public domain 5.45.4
Fil filkommando er et standard Unix -program til genkendelse af datatypen i en computerfil. BSD-lignende licens 5.39
Findutils Den GNU Find Utilities er de grundlæggende mappe søge hjælpeprogrammer i GNU-operativsystemet. GNU GPL 4.8.0
Fleksibel flex (hurtig leksikalsk analysatorgenerator ) er et gratis software -alternativ til lex . BSD -licens 2.6.4
Gawk Gawk er et programmeringssprog, der er designet til behandling af tekstbaserede data, enten i filer eller datastrømme GNU GPL 5.1.0
GCC GNU Compiler Collection (normalt forkortet til GCC) er et compilersystem produceret af GNU -projektet, der understøtter forskellige programmeringssprog 10.2.0
GDBM GDBM simple databasemotorer 1.19
Gettext Gettext er GNU internationalisering og lokalisering (i18n) bibliotek. 0,21
Glibc GNU C -biblioteket , almindeligvis kendt som glibc, er C -standardbiblioteket frigivet af GNU -projektet . 2,33
GMP GNU Multiple-Precision Library, også kendt som GMP, er et gratis bibliotek til vilkårlig præcision aritmetik , der opererer på signerede heltal , rationelle tal og flydende tal. 6.2.1
Gperf En perfekt hashfunktionsgenerator. For en given liste med strenge producerer den en hashfunktion og hashtabel i form af C- eller C ++ - kode til at slå en værdi op afhængigt af inputstrengen. Hashfunktionen er perfekt, hvilket betyder, at hashtabellen ikke har nogen kollisioner, og opslag i hashtabellen kræver kun en enkelt strengsammenligning. 3.1
Grep greper et kommandolinje tekstsøgningsværktøj, der oprindeligt blev skrevet til Unix . 3.6
Groff Groff er GNU erstatning for de troff og nroff tekst formatere . 1.22.4
GRUB GNU GRUB (forkortelse for GNU GRand Unified Bootloader) er en boot loader -pakke fra GNU -projektet . 2.04
Gzip Gzip er et softwareprogram, der bruges til filkomprimering . gzip er en forkortelse for GNU zip 1.10
iana-osv. iana-osv. installerer tjenester og protokoller ved hjælp af data fra Internet Assigned Numbers Authority . Inkluderet er øjebliksbilleder af dataene fra IANA, scripts til at transformere disse data til de nødvendige formater og scripts til at hente de nyeste data. Åbn softwarelicens 20210202
Inetutils En samling netværksværktøjer, herunder: telnet , ftp og rsh . GNU GPL 2.0
Intool Et sæt værktøjer til centralisering af oversættelse af mange forskellige filformater ved hjælp af GNU gettext-kompatible PO-filer. 0,51,0
IPRoute2 En samling af brugerpladsværktøjer til styring og overvågning af forskellige aspekter af netværk i Linux-kernen , herunder Routing , netværksgrænseflader , tunneler, trafikkontrol og netværksrelaterede enhedsdrivere . 5.10.0
Kbd En pakke indeholder værktøjer til administration af Linux -konsollen (Linux -konsol, virtuelle terminaler på den, tastatur osv.). Det, de hovedsageligt gør, er at indlæse konsolfonte og tastaturkort. Denne pakke indeholder også et sæt forskellige skrifttyper og tastaturkort. 2.4.0
Kmod En binær med flere opkald, der implementerer de programmer, der bruges til at styre Linux Kernel-moduler. 28
mindre lesser en terminal personsøger programUnix , Windows og Unix-lignende systemer, der anvendes til visning (men ikke ændre) indholdet af en tekstfil én skærm ad gangen. Dobbelt: enten GPL eller BSD-lignende licens 563
LFS-Bootscripts LFS-Bootscripts-pakken indeholder et sæt scripts til at starte/stoppe LFS-systemet ved opstart/nedlukning. De konfigurationsfiler og procedurer, der er nødvendige for at tilpasse opstartsprocessen, er beskrevet i de følgende afsnit. Creative Commons -licenser og MIT -licens 20210201
Libcap Et alternativ til superbrugerprivilegiemodellen under Linux. 2,48
Libffi Et bærbart bibliotek med udenlandsk funktion. MIT -licens 3.3
Libpipeline Libpipeline er et C -bibliotek til at manipulere rørledninger af delprocesser på en fleksibel og bekvem måde. GNU GPL 1.5.3
Libtool GNU Libtool er et GNU programmeringsværktøj fra GNU build systemet, der bruges til at oprette bærbare kompilerede biblioteker . 2.4.6
Linux Linux-kernen er et operativsystem kerne bruges af Linux- familien af Unix-lignende operativsystemer . 5.10.17
GNU m4 GNU m4 er GNU -versionen af m4 -makroprocessoren. 1.4.18
lave Make er et værktøj til automatisk at bygge eksekverbare programmer og biblioteker fra kildekoden . 4.3
Man-DB Man-DB er en implementering af det standard Unix-dokumentationssystem, der tilgås ved hjælp af kommandoen man. Den bruger en Berkeley DB-database i stedet for de traditionelle fladtekst-whatis-databaser. 2.9.4
Mandsider En man-side (forkortelse for manuel side) er en form for online softwaredokumentation, der normalt findes på et Unix eller Unix-lignende operativsystem. Flere licenser. 5.10
Meson et open source build -system, der skulle være både ekstremt hurtigt og, endnu vigtigere, så brugervenligt som muligt. Apache -licens 0,57,1
MPC AC -bibliotek til regning af komplekse tal med vilkårlig høj præcision GNU LGPL 1.2.1
MPFR GNU C-bibliotek til flere præcisions flydende punktberegninger med korrekt afrunding. GNU LGPL og GNU GPL for en særlig undtagelsesdel af kildekoden 4.1.0
ncurses Et programmeringsbibliotek til at skrive tekstbrugergrænseflader på en terminaluafhængig måde X11 -licens 6.2
Ninja Et lille byggesystem med fokus på hastighed. Apache -licens 1.10.2
OpenSSL Apache License  1.0 og fire-klausul BSD License 1.1.1j
Lappe Et computerværktøj til Unix -programmer, der opdaterer tekstfiler i henhold til instruktionerne i en separat fil, kaldet en patch -fil . GNU GPL 2.7.6
Perl Et dynamisk fortolket programmeringssprog Artistic License 1.0 eller GNU GPL 5.32.1
Pkg-config Et computerprogram, der giver en samlet grænseflade til forespørgsel på installerede biblioteker med det formål at kompilere software fra dets kildekode . GNU GPL 0,29,2
Rekvisitter Et sæt kommandolinje og fuldskærmsværktøjer, der giver information ud af pseudo-filsystemet, der oftest er placeret på /proc . Dette filsystem giver en enkel grænseflade til kernedatastrukturer. Props -programmerne koncentrerer sig generelt om de strukturer, der beskriver de processer, der kører på systemet. GNU GPL og GNU LGPL 3.3.17
Psmisc Et sæt med nogle små nyttige værktøjer, der bruger proc -filsystemet. GNU GPL 23.4
Python En open source fortolket programmeringssprog på højt niveau til generel programmering Python Software Foundation -licens 3.9.2
Python dokumentation Pakken indeholder Python -udviklingsmiljøet. 3.9.2
Læselinje GNU readline er et softwarebibliotek oprettet og vedligeholdt af GNU -projektet . GNU GPL 8.1
sed sed ( stream editor ) er et Unix -værktøj, der (a) analyserer tekstfiler og (b) implementerer et programmeringssprog, der kan anvende tekstforandringer på sådanne filer. 4.8
Skygge Et værktøj på de fleste Unix og Unix-lignende operativsystemer, der bruges til at ændre en brugers adgangskode . Adgangskoden, som brugeren har indtastet, køres via en nøglederiveringsfunktion for at oprette en hash -version af den nye adgangskode, som gemmes. Kun den hashede version gemmes; den indtastede adgangskode gemmes ikke af sikkerhedsmæssige årsager. Kunstnerisk licens eller BSD-lignende licens 4.8.1
Sysklogd En kerne- og systemlogning -dæmoner, der leverer to systemværktøjer, der understøtter systemlogning og fangst af kernemeddelelser. Understøttelse af både internet- og unix -domæne -sockets gør denne hjælpepakke til at understøtte både lokal og ekstern logning. GNU GPL 1.5.1
Sysvinit System V -stil init -programmer, der styrer opstarts- og nedlukningssystemet. 2,96
tjære tar er et program, der giver mulighed for at oprette tjærearkiver samt forskellige andre former for manipulation. 1,34
Tcl Tool Command Language er et dynamisk scriptsprog . BSD-lignende licens 8.6.11
Texinfo En sætningssyntaks, der bruges til at generere dokumentation i både online trykt form og det officielle dokumentationsformat for GNU-projektet. GNU GPL 6.7
tzdata Den offentlige domænes tidszonedatabase indeholder kode og data, der repræsenterer historien om lokal tid for mange repræsentative steder rundt om i verden. Public domain og BSD 2021a
Udev -konfiguration Tarball Udev -pakken indeholder programmer til dynamisk oprettelse af enhedsnoder. Udviklingen af ​​udev er blevet fusioneret med systemd, men det meste af systemd er inkompatibelt med LFS. Her bygger og installerer vi bare de nødvendige udev -filer. Creative Commons -licenser og MIT -licens udev-lfs-20171102
util-linux Pakken Util-linux indeholder diverse hjælpeprogrammer. Blandt dem er værktøjer til håndtering af filsystemer, konsoller, partitioner og meddelelser. GNU GPL 2.36.2
Vim sprog filer (anbefales) En tekstredigerer bygget til at oprette og ændre enhver form for tekst. Gratis software ( Vim License ), velgørende formål 8.2.2433
XML :: Parser 2,46
XZ Utils En generel datakomprimeringssoftware med et højt komprimeringsforhold. XZ Utils blev skrevet til POSIX-lignende systemer, men fungerer også på nogle ikke-så-POSIX-systemer. XZ Utils er efterfølgeren til LZMA Utils. GNU GPL og GNU LGPL 5.2.5
Zlib Zlib er et softwarebibliotek, der bruges til datakomprimering . zlib -licens 1.2.11
zstd zstd en hurtig tabsfri komprimeringsalgoritme og datakomprimeringsværktøj. Komprimer eller dekomprimer .zst -filer. BSD + GPLv2 dobbelt licens. 1.4.8

Dette er en liste over de pakker, der er inkluderet i CLFS version 1.1.0. Medmindre andet er angivet, er denne liste gældende for alle understøttede arkitekturer.

Standard byggeenhed

En "standard build -enhed" ("SBU") er et udtryk, der bruges under den første bootstrapping af systemet, og repræsenterer den tid, det tager at bygge den første pakke i LFS på en given computer. Dens oprettelse blev tilskyndet til den lange tid, der krævede at bygge et LFS -system, og ønsket fra mange brugere om at vide, hvor lang tid en kilde tarball vil tage at bygge på forhånd.

Fra Linux Fra Scratch version 10.1 er den første pakke, der er bygget af brugeren, GNU binutils. Når de bygger det, opfordres brugerne til at måle byggeprocessen ved hjælp af skalkonstruktioner og dub dengang systemets "standard build -enhed". Når dette tal er kendt, udtrykkes et skøn over den tid, der kræves til at bygge senere pakker i forhold til den kendte SBU.

Flere pakker, der blev bygget under kompilering, tager meget længere tid at bygge end binutils, herunder GNU C -biblioteket (vurderet til 4,2 SBU'er) og GNU Compiler Collection (vurderet til 11 SBU'er). Enheden skal tolkes som en tilnærmelse; forskellige faktorer påvirker den faktiske tid, der kræves til at bygge en pakke.

Reception

LWN.net gennemgik LFS i 2004:

Linux From Scratch er et vidunderligt projekt. Det bør blive et obligatorisk læsestof til alle Linux -træningskurser og noget, som enhver Linux -entusiast bør gennemføre mindst én gang. Dette ville også skabe en anden interessant bivirkning: Folk, der har en tendens til at være hurtige til at udtrykke utilfredshed på distributionernes mailinglister og fora, ville sandsynligvis vise meget mere respekt for udviklerne. Installation af en færdig distribution er en triviel opgave. At bygge et sæt med 4 cd'er indeholdende et stabilt, sikkert og pålideligt operativsystem plus tusinder af applikationer er bestemt ikke.

Tux Machines skrev en anmeldelse om Linux From Scratch 6.1 i 2005:

Nu til BLFS. Desværre er Beyond Linux From Scratch altid en bog bag det ser ud til. For mig er det ikke en reel installation, før man kan logge ind på en vindueshåndtering.

Tux Machines har også en anden og en tredje del af anmeldelsen.

Se også

Andre kildebaserede Linux-distributioner:

Referencer

eksterne links