Možno, že mnohí používatelia GNU/Linux sa v súvislosti s nedávnymi iniciatívami úradov na vytvorenie "suverénneho" internetu zaoberajú potrebou zabezpečiť sa pre prípad nedostupnosti repozitárov populárnych distribúcií GNU/Linux.
Niektorí sťahujú repozitáre CentOS, Ubuntu, Debian, niekto vytvára svoje distribúcie na základe existujúcich distribúcií, a niekto, ozbrojený knihami LFS (Linux From Scratch) a BLFS (Beyond Linux From Scratch), sa už pustil do kompilácie svojich distribúcií z pôvodných zdrojov, pretože verí, že v podmienkach "suverénneho" internetu určite dôjde k hackerským útokom, vírusovým epidémiám, únikom dát a binárne súbory sa po čase jednoducho stanú zastaranými.
Nedávno som sa konečne dostal k úplnej kompilácii virtuálnej stroje zo zdrojového kódu na základe pokynov uvedených v knihe Linux From Scratch Systemd Edition v.8.3. Chcem sa s vami podeliť o výsledky.
Proces zostavenia Linuxu
Proces vytvárania Linuxu zo zdrojového kódu sa dá rozdeliť do troch fáz:
- Na základe existujúceho operačného systému sa vytvorí prostredie na zostavenie LFS.
- V prostredí na zostavenie sa vytvorí obrázok virtuálnej mašiny LFS.
- Na virtuálnej mašine sa nainštalujú ďalšie balíky z knihy BLFS, ktoré nie sú v knihe LFS.
Statické súbory skriptov
Pri práci s prostredím na zostavenie je užitočné používať schránku a SSH: skopíroval som príkazy z knihy a vložil ich do konzoly prostredia na zostavenie.
Po spustení vytvorenej virtuálnej mašiny sa objavili vážne problémy. Na rozdiel od okna terminálu nie je možné kód vložiť do okna klienta virtuálnej mašiny. Zadávanie príkazov z klávesnice je nepraktické a hrozí veľké riziko preklepov. Nebezpečenstvo preklepov spočíva v tom, že sa môžu prejaviť nie hneď, ale po nejakom čase a viesť k vážnym problémom.
Je známe, že príkazy je možné zadávať nielen z klávesnice, ale aj zo štandardného vstupu (STDIN). Zdrojem štandardného vstupu môže byť sériový port, ako aj výstup programu skriptu, tzv. štandardný výstup (STDOUT).
Mnohí vedia, že príkaz wget môže vypisovať obsah stiahnutého súboru na štandardný výstup (STDOUT):
wget http://example.com -O -Ak výstup príkazu wget nasmerujeme do interpretátora, môžeme vykonať ľubovoľný kód. Kód sa vykoná tak, ako keby bol zadaný na klávesnici alebo skopírovaný z clipboardu:
wget http://umvirt.com/linux/helloworld.sh -O - | bashTýmto spôsobom môžete umiestniť na nejaký webový server súbory s príkazmi a posielať ich obsah do interpretátora.
Dynamické súbory skriptov
Štatické súbory sú síce dobré, ak presne viete, čo sa má vykonať, ale čo ak sa nainštaluje balík a nie je jasné, či sú závislosti nainštalované alebo nie?
Na pomoc prichádza dynamická stránka založená na LAMP webovom serveri (Linux-Apache-MySQL-PHP). Ak môže stránka dynamicky generovať stránky (HTML súbory) a obrázky, mala by si poradiť aj so štandardným textovými súbormi.
A tak sa aj stalo. Napísal som stránku ktorá generuje skripty pre interpretátor Bash. V databáze stránky sú informácie o balíkoch, závislostiach, patchoch, doplnkoch a príkazoch na zostavenie.
Teraz je možné pre inštaláciu balíka mc (midnight commander) zadať príkaz:
wget --no-check-certificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bashSkript stránky sám získa údaje z databázy a vytvorí kód na kontrolu závislostí a kód skriptu na inštaláciu balíka. Interpretátor spracuje inštrukcie zo skriptu.
Aby to bolo možné, na disku virtuálneho stroja sa uchováva informácia o nainštalovaných balíkoch v databáze.
Databáza nainštalovaných balíkov sa nachádza v adresári /var/cache/ulfs-packages predstavuje zoznam prázdnych súborov s názvami zodpovedajúcimi názvom balíkov.
Ak sa balík v databáze nenájde, nastane rekurzívna inštalácia závislostí.
Pohodlie
Aby sa inštalácia balíkov stala pohodlnejšou, napísal som skript chimp, ďalšiu stránku , ktorá využíva databázu UmVirt LFS Packages. Hlavnou úlohou UmVirt LFS Assistant je vykonávanie ďalších príkazov.
Pomocou chimp sa inštalácia balíkov stáva ešte jednoduchšou:
chimp install mcDemonštrácia
Aby ste sa oboznámili s prácou služieb UmVirt LFS Packages a UmVirt LFS Assistant môžete si stiahnuť základný obraz . Vykonajte inštaláciu Xorg jedným príkazom:
chimp install XPočas behu skriptu bude automaticky nainštalovaných 141 balíkov. Aby ste ušetrili čas pri kompilácii, môžete v súbore /etc/profile zmeniť hodnotu premennej MAKEFLAGS z „-j1“ (jeden vláknový proces) napríklad na „-j6“ (šesť vláknových procesov).
Decentralizácia a prispôsobenie
Na zabezpečenie bezpečnosti, autonómnosti a prispôsobenia je zdrojový kód služieb UmVirt LFS Packages a UmVirt LFS Assistant zverejnený na verejnosti. Ktokoľvek si ho môže stiahnuť, nasadiť a upraviť služby vo svojej infraštruktúre.
Zdroj: habr.com
