1 Punkte von GN⁺ 2024-07-03 | 1 Kommentare | Auf WhatsApp teilen

Linux von Google Drive booten

Aber wie?

  • Das sollte ohne Hilfsgerät eigenständig gelöst werden
  • Mit FUSE wurde es so eingerichtet, dass es als Dateisystemtreiber im Userspace arbeitet
  • Das FUSE-Programm musste in das Linux-Kernel-initramfs installiert und die Netzwerkkonfiguration eingerichtet werden

Linux-Bootprozess

  1. Die Firmware (BIOS/UEFI) startet und lädt den Bootloader
  2. Der Bootloader lädt den Kernel
  3. Der Kernel entpackt ein temporäres Dateisystem in den RAM, das Werkzeuge zum Mounten des eigentlichen Dateisystems bereitstellt
  4. Der Kernel mountet das eigentliche Dateisystem und wechselt den Prozess auf das init-System, das auf dem neuen Dateisystem läuft

Proof of Concept

  • Erforderlich war ein initramfs mit Netzwerkunterstützung und einer passenden FUSE-Binärdatei
  • Mit Dracut ließ sich ein benutzerdefiniertes initramfs einfach bauen
  • Es fiel die Entscheidung, auf Basis von Arch Linux zu bauen

Google greift ein

  • Das Projekt google-drive-ocamlfuse wurde verwendet, um Google Drive per FUSE zu mounten
  • Es traten mehrere Probleme auf: symbolische Links, Hardlinks, Geschwindigkeit, Berechtigungen usw.
  • Zur Behebung der Probleme wurden symbolische Links manuell erstellt und weitere Einstellungen angepasst

Auf echter Hardware ausführen

  • Verwendung des richtigen Ethernet-Treibers und Anpassung der Netzwerkkonfiguration
  • Eine integrierte EFI-Datei wurde auf einem USB-Laufwerk gebaut, um sie auf echter Hardware zu testen

Fazit

  • Dieses Projekt zeigt die Möglichkeiten von Cloud-native Computing
  • Es gibt verschiedene Anwendungsmöglichkeiten, etwa Linux von SSH oder einem Git-Repository zu booten

Meinung von GN⁺

  • Dieses Projekt ist ein interessanter Versuch, die Möglichkeiten von Cloud-native Computing auszuloten
  • Man kann lernen, wie sich die verschiedenen Probleme lösen lassen, die beim Booten von Linux von Google Drive mit FUSE auftreten
  • Leistungs- und Zuverlässigkeitsprobleme Cloud-basierter Dateisysteme sollten berücksichtigt werden
  • Andere Projekte mit ähnlicher Funktionalität sind unter anderem gitfs
  • Bei der Einführung neuer Technologien sollten Aspekte wie Leistung, Zuverlässigkeit und Sicherheit sorgfältig berücksichtigt werden

1 Kommentare

 
GN⁺ 2024-07-03
Hacker-News-Kommentar
  • Diese Technik als „Booten“ zu bezeichnen, ist fragwürdig, da der Kernel bereits gebootet ist

    • Ich würde es akzeptieren, wenn grub Unterstützung für das „Mounten“ von Google Drive bekäme
    • Im Grunde wird dabei das rootfs an einem seltsamen Ort abgelegt
    • Nebenbei: Mein Projekt besteht darin, das rootfs von NixOS auf IPFS abzulegen
  • Früher konnte man Sun Solaris über HTTP booten

    • Das nannte sich wanboot
    • Es war eine Firmware-Option des OpenBoot PROM auf SPARC-Maschinen
    • Beispiel für eine Network-Boot-Konfiguration:
      ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi
      ok boot net
      
    • Dabei werden initramfs und Kernel über das (Inter-)Netzwerk geladen
    • Relevante Dokumentationslinks:
  • Wie wäre es damit, Linux über BitTorrent zu booten?

    • nbdkit-torrent-plugin-Beispiel
    • Das Problem ist, dass der Kernel beim Booten von Linux auf Geräten mit hoher Latenz I/O-Anfragen viel zu schnell mit einem Timeout versieht (etwa 60 Sekunden)
    • Man müsste die Timeout-Zeit erhöhen
  • Kann man wirklich von Remote-Boot sprechen, wenn man ein paar Megabyte rootfs aus einem lokalen initramfs bootet?

  • Was die Leute wirklich wollen, sind Bootzeiten im Sekundenbereich, besonders bei Embedded-Systemen

    • Das ist ein schwieriges Problem, aber es scheint wenig Interesse an CS-Forschung zu geben, die das lösen würde
  • Es wird erwähnt, von S3 zu booten

    • Wenn man das auf Google Drive umstellt, kommt zusätzliche Latenz hinzu
    • Trotzdem gut gemacht
  • Als ich zu Hause zum ersten Mal ein Kabelmodem installiert habe, konnte ich mit einer Boot-Diskette BSD über das Netzwerk installieren

    • Damals war das erstaunlich
    • Ich bin nicht sicher, ob das heute noch möglich ist
    • Vermutlich wurden die Dateien per FTP oder TFTP gehostet
    • Heutzutage sind es meistens ISO-Dateien
  • Ich habe einmal etwas Ähnliches gemacht: vom RPM-Repository der Tumbleweed-Installations-DVD gebootet

    • Das ursprüngliche Ziel war, ein FUSE-Dateisystem zu schreiben, das RPM-Pakete mountet
    • Ich wollte sehen, wie weit man damit kommt
    • Im Ergebnis kommt man ziemlich weit:
    • Das System bootet in einen funktionierenden Desktop, und alle Pakete auf der DVD erscheinen so, als wären sie installiert
  • Unter Windows macht man so etwas oft mit Citrix

    • Das nennt sich pvs
    • Man macht einen kleinen PXE-Boot und streamt dann ein Windows-Server-Image
  • „Mir wird schwindelig, und inmitten von Tausenden Jahren Programmiererzeit und den Schreien des Wahnsinns finde ich mein Meisterwerk“

    • Pulitzer-verdächtig