1 puntos por GN⁺ 2024-07-03 | 1 comentarios | Compartir por WhatsApp

Arrancar Linux desde Google Drive

Pero, ¿cómo?

  • Quería resolverlo por sí solo, sin dispositivos auxiliares
  • Usó FUSE para configurarlo de modo que funcionara como un controlador de sistema de archivos en espacio de usuario
  • Tuvo que instalar el programa FUSE en el initramfs del kernel de Linux y configurar la red

Proceso de arranque de Linux

  1. El firmware (BIOS/UEFI) inicia y carga el cargador de arranque
  2. El cargador de arranque carga el kernel
  3. El kernel descomprime un sistema de archivos temporal en la RAM para proporcionar herramientas con las que montar el sistema de archivos real
  4. El kernel monta el sistema de archivos real y transfiere los procesos al sistema init que se ejecuta en el nuevo sistema de archivos

Prueba de concepto

  • Se necesitaba un initramfs con soporte de red y el binario FUSE adecuado
  • Con Dracut fue posible compilar fácilmente un initramfs personalizado
  • Se decidió compilarlo sobre la base de Arch Linux

Google interviene

  • Se usó el proyecto google-drive-ocamlfuse para montar Google Drive con FUSE
  • Surgieron varios problemas: enlaces simbólicos, enlaces duros, velocidad, permisos, etc.
  • Para resolverlos, se crearon enlaces simbólicos manualmente y se ajustaron otras configuraciones

Ejecutarlo en hardware real

  • Uso del controlador Ethernet correcto y cambios en la configuración de red
  • Se compiló un archivo EFI integrado en una unidad USB para probarlo en hardware real

Conclusión

  • Este proyecto muestra las posibilidades de la computación cloud-native
  • Existen varias aplicaciones posibles, como arrancar Linux desde SSH o desde un repositorio Git

Opinión de GN⁺

  • Este proyecto es un intento interesante de explorar las posibilidades de la computación cloud-native
  • Se puede aprender cómo resolver varios problemas que surgen al arrancar Linux desde Google Drive usando FUSE
  • Hay que considerar los problemas de rendimiento y estabilidad de los sistemas de archivos basados en la nube
  • Otros proyectos que ofrecen funciones similares incluyen gitfs
  • Al adoptar nuevas tecnologías, hay que considerar cuidadosamente aspectos como rendimiento, estabilidad y seguridad

1 comentarios

 
GN⁺ 2024-07-03
Opinión de Hacker News
  • Llamar a esta técnica "arranque" es discutible, porque el kernel ya está arrancado

    • Lo aceptaré cuando se agregue soporte para montar google-drive en grub
    • Esto consiste en poner el rootfs en un lugar extraño
    • Como referencia, mi proyecto consiste en poner el rootfs de NixOS en IPFS
  • En el pasado, Sun Solaris podía arrancar a través de HTTP

    • A eso le llamaban wanboot
    • Era una opción de firmware OpenBoot PROM para máquinas SPARC
    • Ejemplo de configuración de arranque por red:
      ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi
      ok boot net
      
    • Esto cargaba el initramfs y el kernel a través de la red
    • Enlaces a documentación relacionada:
  • ¿Qué tal arrancar Linux por bittorrent?

    • Ejemplo de nbdkit-torrent-plugin
    • El problema es que, al arrancar Linux desde un dispositivo con alta latencia, el kernel agota el tiempo de espera de las solicitudes de I/O demasiado rápido (unos 60 segundos)
    • Habría que aumentar el tiempo de espera
  • Si arrancas unos pocos megabytes de rootfs desde un initramfs local, ¿realmente se puede decir que arranca en remoto?

  • Lo que la gente realmente quiere son arranques en segundos, especialmente en sistemas embebidos

    • Es un problema difícil, pero no parece que haya mucho interés en investigación de CS para resolverlo
  • Se menciona arrancar desde S3

    • Cambiarlo por Google Drive añade latencia
    • Aun así, buen trabajo
  • Cuando instalaron por primera vez el módem de cable en mi casa, se podía instalar BSD por red usando un disquete de arranque

    • En ese momento era algo increíble
    • No estoy seguro de si todavía se puede hacer hoy en día
    • Probablemente los archivos estaban alojados en FTP o TFTP
    • Hoy en día casi todo son archivos ISO
  • Hice algo parecido: arrancar desde el repositorio RPM del DVD de instalación de Tumbleweed

    • El objetivo inicial era escribir un sistema de archivos fuse que montara paquetes RPM
    • Quería ver hasta dónde se podía llegar
    • Resultó que bastante lejos:
    • El sistema arranca hasta un escritorio funcional, y parece como si todos los paquetes del DVD estuvieran instalados
  • En Windows esto se hace seguido usando Citrix

    • Lo llaman pvs
    • Haces un pequeño arranque por pxe y transmites la imagen de un servidor Windows
  • "Mi mente se nubla, y entre miles de años de tiempo de programadores y gritos de locura encuentro mi obra maestra"

    • Material para nominar al Pulitzer