1 points par GN⁺ 2024-07-03 | 1 commentaires | Partager sur WhatsApp

Démarrer Linux depuis Google Drive

Mais comment ?

  • L’objectif était de s’en sortir de manière autonome, sans périphérique auxiliaire
  • Utilisation de FUSE pour fonctionner comme un pilote de système de fichiers en espace utilisateur
  • Il a fallu installer le programme FUSE dans l’initramfs du noyau Linux et configurer le réseau

Processus de démarrage de Linux

  1. Le firmware (BIOS/UEFI) lance et charge le chargeur de démarrage
  2. Le chargeur de démarrage charge le noyau
  3. Le noyau décompresse un système de fichiers temporaire en RAM afin de fournir les outils nécessaires pour monter le véritable système de fichiers
  4. Le noyau monte le véritable système de fichiers et transfère les processus vers le système init exécuté sur ce nouveau système de fichiers

Preuve de concept

  • Un initramfs avec prise en charge du réseau et le bon binaire FUSE était nécessaire
  • Dracut a permis de construire facilement un initramfs personnalisé
  • Le choix s’est porté sur une construction basée sur Arch Linux

Google entre en jeu

  • Utilisation du projet google-drive-ocamlfuse pour monter Google Drive avec FUSE
  • Plusieurs problèmes sont apparus : liens symboliques, liens physiques, vitesse, permissions, etc.
  • Pour les résoudre, des liens symboliques ont été créés manuellement et d’autres réglages ont été ajustés

Exécution sur du matériel réel

  • Utilisation du bon pilote Ethernet et modification de la configuration réseau
  • Construction d’un fichier EFI unifié sur une clé USB pour tester sur du matériel réel

Conclusion

  • Ce projet montre les possibilités du cloud-native computing
  • Il existe diverses applications possibles, comme démarrer Linux depuis SSH ou depuis un dépôt Git

L’avis de GN⁺

  • Ce projet est une tentative intéressante d’explorer les possibilités du cloud-native computing
  • On peut y apprendre comment résoudre les différents problèmes qui surviennent lorsqu’on démarre Linux depuis Google Drive avec FUSE
  • Il faut tenir compte des problèmes de performances et de fiabilité des systèmes de fichiers basés sur le cloud
  • Parmi les autres projets offrant des fonctions similaires, on peut citer gitfs
  • Lors de l’adoption de nouvelles technologies, il faut examiner avec soin les aspects liés aux performances, à la fiabilité et à la sécurité

1 commentaires

 
GN⁺ 2024-07-03
Commentaire Hacker News
  • Il est difficile d'appeler cette technique un « boot » alors que le noyau est déjà démarré

    • J'y croirai quand la prise en charge du « montage » de Google Drive sera ajoutée à grub
    • Cela revient à placer le rootfs dans un endroit étrange
    • Pour référence, mon projet consiste à placer le rootfs de NixOS sur IPFS
  • Par le passé, il était possible de démarrer Sun Solaris via HTTP

    • Cela s'appelait wanboot
    • C'était une option du firmware OpenBoot PROM des machines SPARC
    • Exemple de configuration de démarrage réseau :
      ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi
      ok boot net
      
    • Cela charge l'initramfs et le noyau via le réseau
    • Liens vers la documentation associée :
  • Et si on démarrait Linux avec bittorrent ?

    • Exemple nbdkit-torrent-plugin
    • Le problème, c'est que lorsque Linux démarre depuis un périphérique à forte latence, le noyau fait expirer les requêtes d'E/S beaucoup trop vite (environ 60 secondes)
    • Il faut augmenter le délai d'expiration
  • Peut-on vraiment parler de démarrage à distance quand on démarre quelques mégaoctets de rootfs depuis un initramfs local ?

  • Ce que les gens veulent vraiment, c'est un démarrage en quelques secondes, surtout sur les systèmes embarqués

    • C'est un problème difficile, mais il ne semble pas susciter beaucoup d'intérêt dans la recherche en informatique pour le résoudre
  • Il est fait mention d'un démarrage depuis S3

    • Le remplacer par Google Drive ajoute de la latence
    • Cela reste malgré tout un beau travail
  • Quand j'ai installé mon premier modem câble à la maison, on pouvait utiliser une disquette de démarrage pour installer BSD via le réseau

    • À l'époque, c'était impressionnant
    • Je ne sais pas si c'est encore possible aujourd'hui
    • Les fichiers devaient probablement être hébergés sur FTP ou TFTP
    • De nos jours, ce sont surtout des fichiers ISO
  • J'ai déjà fait quelque chose de similaire : démarrer depuis le dépôt RPM du DVD d'installation de Tumbleweed

    • L'objectif initial était d'écrire un système de fichiers fuse capable de monter des paquets RPM
    • Je voulais voir jusqu'où cela pouvait aller
    • Au final, cela allait assez loin :
    • Le système démarre sur un bureau fonctionnel, et tous les paquets du DVD semblent installés
  • Sous Windows, on fait souvent cela avec Citrix

    • Cela s'appelle pvs
    • On effectue un petit démarrage pxe puis on streame une image serveur Windows
  • « L'esprit vacille, et au milieu de milliers d'années de temps de programmeur et de cris de folie, je découvre mon chef-d'œuvre »

    • Une candidature potentielle au prix Pulitzer