Vielleicht waren viele der GNU / Linux-Benutzer angesichts der jüngsten Regierungsinitiativen zur Schaffung eines „souveränen“ Internets verwirrt über das Ziel, vor Repositories beliebter GNU / Linux-Distributionen sicher zu sein.
Jemand, der CentOS-, Ubuntu- und Debian-Repositorys herunterlädt, seine Distributionen basierend auf vorhandenen Distributionen erstellt und jemand, der mit Büchern wie LFS (Linux From Scratch) und BLFS (Beyond Linux From Scratch) ausgestattet ist, hat seitdem bereits damit begonnen, seine Distributionen aus der Quelle zu kompilieren Er glaubt, dass unter den Bedingungen eines „souveränen“ Internet-Hacker-Angriffs Virenausbrüche, Datenlecks mit Sicherheit auftreten und Binärdateien nach einiger Zeit einfach veraltet sein werden.
Vor kurzem wurde es möglich, eine virtuelle Maschine vollständig aus dem Quellcode zu kompilieren, basierend auf den Anweisungen im Buch Linux From Scratch Systemd Edition v.8.3. Ich beeile mich, die Ergebnisse mit Ihnen zu teilen.
Linux Build-Prozess
Der Prozess des Erstellens von Linux aus dem Quellcode kann in drei Phasen unterteilt werden:
- Basierend auf dem vorhandenen Betriebssystem wird die LFS-Build-Umgebung erstellt.
- Die Build-Umgebung erstellt ein Image der virtuellen LFS-Maschine.
- Die virtuelle Maschine installiert zusätzliche Pakete aus dem BLFS-Buch, die nicht im LFS-Buch enthalten sind.
Statische Skriptdateien
Wenn Sie mit der Build-Umgebung arbeiten, können Sie bequem die Zwischenablage und SSH verwenden: Kopieren Sie Befehle aus dem Buch und fügen Sie sie in die Build-Umgebungskonsole ein.
Nach dem Start der erstellten virtuellen Maschine traten schwerwiegende Probleme auf. Im Gegensatz zum Terminalfenster kann der Code nicht in das Clientfenster der virtuellen Maschine eingefügt werden. Das Eingeben von Tastaturbefehlen ist unpraktisch und es besteht ein großes Risiko für Tippfehler. Die Gefahr von Tippfehlern besteht darin, dass sie möglicherweise nicht sofort, sondern nach einer Weile auftreten und zu ernsthaften Problemen führen.
Es ist bekannt, dass Befehle nicht nur über die Tastatur, sondern auch über den Standard-Stream (STDIN) eingegeben werden können. Die Quelle des Standard-Streams kann sowohl die serielle Schnittstelle als auch das Ergebnis des Skriptprogramms, die sogenannte Standardausgabe (STDOUT), verwenden.
Viele Menschen wissen, dass der Befehl wget den Inhalt der heruntergeladenen Datei in die Standardausgabe (STDOUT) ausgeben kann:
wget http://example.com -O -
Wenn die Ausgabe des Befehls wget an den Interpreter gesendet wird, kann beliebiger Code ausgeführt werden. Der Code wird so ausgeführt, als ob er auf der Tastatur eingegeben oder aus der Zwischenablage kopiert worden wäre:
wget http://umvirt.com/linux/helloworld.sh -O - | bash
Auf diese Weise können Sie Dateien mit Befehlen auf einem Webserver ablegen und deren Inhalt an den Interpreter senden.
Dynamische Skriptdateien
Statische Dateien sind natürlich eine gute Sache, wenn Sie genau wissen, was zu tun ist, und wenn das Paket installiert ist, wenn die Abhängigkeiten nicht eindeutig installiert sind oder nicht, was dann?
Eine dynamische Site, die auf dem
LAMP-Webserver (Linux-Apache-MySQL-PHP) basiert,
hilft . Wenn eine Site dynamisch Seiten (HTML-Dateien) und Bilder generieren kann, sollte sie mit normalen Textdateien umgehen können.
Und so geschah es. Schrieb die Site
UmVirt LFS Packages , die Skripte für den Bash-Interpreter generiert. Die Site-Datenbank enthält Informationen zu Paketen, Abhängigkeiten, Patches, Ergänzungen und Build-Befehlen.
Um das mc-Paket (Mitternachtskommandant) zu installieren, können Sie den folgenden Befehl schreiben:
wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash
Das Site-Skript selbst empfängt Daten aus der Datenbank und generiert einen Code zum Überprüfen von Abhängigkeiten und einen Skriptcode zum Installieren des Pakets. Der Interpreter verarbeitet die Anweisungen aus dem Skript.
Um dies zu ermöglichen, werden Informationen zu installierten Paketen in der Datenbank auf der Festplatte der virtuellen Maschine gespeichert.
Die Datenbank der installierten Pakete befindet sich im Verzeichnis
/ var / cache / ulfs-packages. Hierbei handelt es sich um eine Liste leerer Dateien, deren Namen dem Namen der Pakete entsprechen.
Wenn das Paket nicht in der Datenbank gefunden wird, wird eine Abhängigkeit rekursiv installiert.
Ausstattung
Um die Installation von Paketen bequemer zu gestalten, habe ich das Schimpansenskript auf eine andere
UmVirt LFS Assistant- Website geschrieben, die die
UmVirt LFS-Paketdatenbank verwendet. Die Hauptaufgabe von
UmVirt LFS Assistant ist die Ausführung anderer Befehle.
Mit Schimpansen ist die Installation von Paketen noch einfacher:
chimp install mc
Demonstration
Um sich mit der Arbeit der Dienste
UmVirt LFS Packages und
UmVirt LFS Assistant vertraut zu machen, können Sie das Basis-Image
Initial UmVirt LFS v.0.1 Update 1 herunterladen. Installieren Sie Xorg, indem Sie einen Befehl ausführen:
chimp install X
Dabei werden 141 Pakete im Automatikmodus installiert. Um Kompilierungszeit zu sparen, können Sie den Wert in der Datei / etc / profile durch die Variable MAKEFLAGS ersetzen, beispielsweise von "-j1" (ein Stream) bis "-j6" (sechs Threads).
Dezentralisierung und Anpassung
Um Sicherheit, Autonomie und Anpassung zu gewährleisten, wurde der Quellcode der UmVirt LFS-Pakete und der UmVirt LFS Assistant-Dienste öffentlich veröffentlicht. Jeder kann es herunterladen, bereitstellen und die Dienste in seiner Infrastruktur optimieren.