Usnadňujeme sestavení Linuxu z původních zdrojů pomocí webu UmVirt LFS Packages

Mnoho uživatelů GNU/Linux se možná začalo zabývat otázkou, jak se pojistit na případ, že dojde k nedostupnosti repozitářů populárních distribucí GNU/Linux, v návaznosti na nedávné iniciativy vlád ke vytvoření "suverénního" internetu.

Někteří stahují repozitáře CentOS, Ubuntu, Debian, jiní si vytvářejí vlastní distribuce na základě stávajících distribucí, a někteří, vybavení knihami LFS (Linux From Scratch) a BLFS (Beyond Linux From Scratch), se už pustili do kompilace svých distribucí ze zdrojového kódu, protože se domnívají, že v podmínkách "suverénního" internetu nevyhnutelně dojde k hackerským útokům, virovým epidemiím, únikům dat a binární soubory se časem stanou zastaralými.

Nedávno jsem měl čas plně zkompilovat virtuální stroj ze zdrojových kódů na základě instrukcí uvedených v knize Linux From Scratch Systemd Edition v.8.3. Rád bych se s vámi podělil o výsledky.

Proces sestavení Linuxu

Proces sestavení Linuxu ze zdrojového kódu lze rozdělit do tří etap:

  1. Na základě stávajícího operačního systému je sestavena prostředí pro LFS.
  2. V prostředí sestavení se vytvoří obraz virtuálního stroje LFS.
  3. Do virtuálního stroje se instalují další balíčky z knihy BLFS, které v knize LFS chybí.

Statické soubory skriptů

Při práci s prostředím sestavení je pohodlné používat clipboard a SSH: z knihy jsem zkopíroval příkazy a vložil je do konzole prostředí sestavení.

Po spuštění vytvořeného virtuálního stroje se objevily vážné problémy. Na rozdíl od okna terminálu nelze kód v okně klienta virtuálního stroje vložit. Psát příkazy na klávesnici je nepohodlné a je velké riziko překlepů. Nebezpečí překlepů spočívá v tom, že se mohou projevit až po nějaké době a vést k vážným problémům.

Je známo, že příkazy lze zadávat nejen z klávesnice, ale i z standardního vstupu (STDIN). Jako zdroj standardního vstupu lze použít sériový port a také výstup programu skriptu, takzvaný standardní výstup (STDOUT).

Mnozí vědí, že příkaz wget může výstupem obsah staženého souboru do standardního výstupu (STDOUT):

wget http://example.com -O -

Pokud výstup příkazu wget nasměrujete do interpretu, můžete vykonat libovolný kód. Kód bude proveden tak, jako by byl napsán na klávesnici nebo zkopírován ze schránky:

wget http://umvirt.com/linux/helloworld.sh -O - | bash

Tímto způsobem můžete umístit na nějaký webový server soubory s příkazy a posílat jejich obsah do interpretu.

Dynamické skriptové soubory

Statické soubory jsou jistě dobré, pokud víte, co má být vykonáno, ale co se děje při instalaci balíčku, pokud není jasné, zda jsou závislosti nainstalovány, co pak?

Na pomoc přichází dynamický web, ten který je na bázi LAMP webového serveru (Linux-Apache-MySQL-PHP). Pokud web může dynamicky generovat stránky (HTML soubory) a obrázky, měl by si bez problémů poradit i s obyčejnými textovými soubory.

A tak to dopadlo. Napsal jsem web UmVirt LFS Packages , který generuje skripty pro Bash interpretor. V databázi webu je obsažena informace o balíčcích, závislostech, patchech, doplněních a příkazech sestavení.

Nyní k instalaci balíčku mc (midnight commander) můžete zadat příkaz:

wget --no-check-certificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash

Skript webu sám získá data z databáze a vytvoří kód pro kontrolu závislostí a kód skriptu pro instalaci balíčku. Interpretor zpracuje pokyny ze skriptu.

Aby to bylo možné, na disku virtuálního stroje se uchovává informace o nainstalovaných balíčcích v databázi.

Databáze nainstalovaných balíčků se nachází v adresáři /var/cache/ulfs-packages , což je seznam prázdných souborů s názvy odpovídajícími názvům balíčků.

Pokud balíček není nalezen v databázi, dojde k rekurzivní instalaci závislostí.

Pohodlí

Aby byla instalace balíčků pohodlnější, napsal jsem skript chimp, ještě jeden web UmVirt LFS Assistant, který využívá databázi. UmVirt LFS PackagesHlavním úkolem UmVirt LFS Assistant je provádění dalších příkazů.

S pomocí chimp se instalace balíčků stává ještě jednodušší:

chimp install mc

Demonstrace

Abyste se seznámili s fungováním služeb, UmVirt LFS Packages a UmVirt LFS Assistant můžete stáhnout základní obraz Initial UmVirt LFS v.0.1 Update 1. Proveďte instalaci Xorg splněním jednoho příkazu:

chimp install X

Během provozu skriptu bude automaticky nainstalováno 141 balíčků. Aby se ušetřil čas na kompilaci, můžete v souboru /etc/profile změnit hodnotu proměnné MAKEFLAGS z „-j1“ (jeden vláknový proces) například na „-j6“ (šest vláknových procesů).

Decentralizace a přizpůsobení

Pro zajištění bezpečnosti, autonomie a přizpůsobení byl zdrojový kód služeb UmVirt LFS Packages a UmVirt LFS Assistant zveřejněn veřejně. Každý si ho může stáhnout, nasadit a upravit služby v rámci své infrastruktury.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster