Kanske har mÄnga anvÀndare av GNU/Linux, med tanke pÄ de senaste myndigheternas initiativ för att skapa ett "souverÀnt" internet, blivit oroade över behovet av att försÀkra sig mot otillgÀnglighet av populÀra distributionsrepositorier för GNU/Linux.
NÄgon laddar ner repositorys för CentOS, Ubuntu, Debian, nÄgon bygger sina egna distributioner baserat pÄ befintliga distributioner, och nÄgon, bevÀpnad med böckerna LFS (Linux From Scratch) och BLFS (Beyond Linux From Scratch), har redan börjat kompilera sina egna distributioner frÄn kÀllkoden eftersom de tror att det i ett "souverÀnt" internet kommer att ske hackerattacker, virusutbrott, dataintrÄng, och att binÀrfiler snart kommer att bli förÄldrade.
Nyligen fick jag Àntligen tid att helt kompilera en virtuell maskin frÄn kÀllkod baserat pÄ instruktionerna i boken Linux From Scratch Systemd Edition v.8.3. Jag skyndar mig att dela resultaten med dig.
Byggprocessen för Linux
Byggprocessen för Linux frÄn kÀllkoden kan delas in i tre steg:
- Baserat pÄ den befintliga operativsystemet byggs en LFS-byggmiljö.
- I byggmiljön skapas en LFS-virtuell maskinbild.
- I den virtuella maskinen installeras ytterligare paket frÄn BLFS-boken som inte finns i LFS-boken.
Statisk fil av skript
Under arbetet med byggmiljön Àr det praktiskt att anvÀnda klippbord och SSH: kopiera kommandon frÄn boken och klistra in dem i byggmiljöns terminal.
Efter att ha startat den skapade virtuella maskinen dök allvarliga problem upp. Till skillnad frÄn terminalfönstret gÄr det inte att klistra in kod i klientfönstret för den virtuella maskinen. Att skriva kommandon med tangentbordet Àr opraktiskt och risken för skrivfel Àr stor. GefÀrderna med skrivfel Àr att de kan visa sig först senare och leda till allvarliga problem.
Det Àr kÀnt att kommandon kan matas in inte bara frÄn tangentbordet utan ocksÄ frÄn standardströmmen (STDIN). KÀllan till standardströmmen kan vara en seriell port samt utdata frÄn programmet, sÄ kallad standardutdata (STDOUT).
MÄnga vet att kommandot wget kan skriva ut innehÄllet i den nedladdade filen till standardutdata (STDOUT):
wget http://example.com -O -Om output frÄn kommandot wget dirigeras till tolk kan valfri kod utföras. Koden kommer att köras precis som om den hade skrivits pÄ tangentbordet eller kopierats frÄn urklippet:
wget http://umvirt.com/linux/helloworld.sh -O - | bashPÄ sÄ sÀtt kan kommandofiler placeras pÄ en webserver och deras innehÄll skickas till tolken.
Dynamiska skriptfiler
Statisk fil Àr visserligen bra om man vet exakt vad som ska utföras, men om det handlar om installation av ett paket, om det inte Àr klart om beroenden Àr installerade eller inte, vad dÄ?
DÄ kommer den dynamiska webbplatsen som baseras pÄ LAMP-webbservern (Linux-Apache-MySQL-PHP). Om webbplatsen kan generera sidor (HTML-filer) och bilder dynamiskt, sÄ borde den klara av vanliga textfiler ocksÄ.
Och sÄ blev det. Jag skrev en webbplats som genererar skript för Bash-tolken. PÄ webbplatsens databas finns information om paket, beroenden, patchar, tillÀgg och byggkommandon.
Nu för att installera paketet mc (midnight commander) kan man skriva kommandot:
wget --no-check-certificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bashWebbplatsens skript kommer sjÀlv att hÀmta data frÄn databasen och skapa koden för att kontrollera beroenden samt skriptkoden för att installera paketet. Tolken kommer att bearbeta instruktionerna frÄn skriptet.
För att detta ska vara möjligt sparas informationen om installerade paket i databasen pÄ den virtuella maskinens disk.
Databasen med installerade paket finns i katalogen /var/cache/ulfs-packages och bestÄr av en lista med tomma filer vars namn motsvarar paketnamnen.
Om paketet inte finns i databasen sker en rekursiv installation av beroenden.
BekvÀmlighet
För att göra installationen av paket mer bekvÀm skrev jag skriptet chimp, ytterligare en webbplats , som anvÀnder databasen UmVirt LFS Packages. Huvuduppgiften UmVirt LFS Assistant Àr att utföra andra kommandon.
Med chimp blir installationen av paket Ànnu enklare:
chimp install mcDemonstration
För att bekanta sig med tjÀnsternas funktion kan man ladda ner den grundlÀggande avbildningen UmVirt LFS Packages och UmVirt LFS Assistant Initial UmVirt LFS v.0.1 Update 1 chimp install X
Under körningen av skriptet kommer 141 paket att installeras automatiskt. För att spara tid vid kompilering kan man i filen /etc/profile Àndra vÀrdet pÄ variabeln MAKEFLAGS frÄn "-j1" (en trÄd) till exempel till "-j6" (sex trÄdar).Under arbetet med skriptet kommer 141 paket att installeras automatiskt. För att spara tid vid kompileringen kan du i filen /etc/profile Àndra vÀrdet pÄ variabeln MAKEFLAGS frÄn "-j1" (en trÄd) till exempel till "-j6" (sex trÄdar).
Decentralisering och anpassning
För att sÀkerstÀlla sÀkerhet, autonomi och anpassning har kÀllkoden för tjÀnsterna UmVirt LFS Packages och UmVirt LFS Assistant publicerats offentligt. Alla som vill kan ladda ner den, distribuera den och justera tjÀnsterna inom sin egen infrastruktur.
KĂ€lla: habr.com
