1P by neo 3달전 | favorite | 댓글 1개

Google Drive에서 Linux 부팅하기

하지만 어떻게?

  • 보조 장치 없이 자체적으로 해결하고 싶었음
  • FUSE를 사용하여 사용자 공간에서 파일 시스템 드라이버로 작동하도록 설정
  • FUSE 프로그램을 Linux 커널 initramfs에 설치하고 네트워킹을 구성해야 했음

Linux 부팅 과정

  1. 펌웨어(BIOS/UEFI)가 부팅 로더를 시작하고 로드함
  2. 부팅 로더가 커널을 로드함
  3. 커널이 임시 파일 시스템을 RAM에 압축 해제하여 실제 파일 시스템을 마운트할 도구를 제공함
  4. 커널이 실제 파일 시스템을 마운트하고 프로세스를 새로운 파일 시스템에서 실행되는 init 시스템으로 전환함

개념 증명

  • 네트워크 지원 및 적절한 FUSE 바이너리를 포함한 initramfs 필요
  • Dracut을 사용하여 사용자 정의 initramfs를 쉽게 빌드할 수 있었음
  • Arch Linux를 기반으로 빌드 결정

Google이 개입함

  • google-drive-ocamlfuse 프로젝트를 사용하여 Google Drive를 FUSE로 마운트
  • 여러 문제 발생: 심볼릭 링크, 하드 링크, 속도, 권한 문제 등
  • 문제를 해결하기 위해 수동으로 심볼릭 링크 생성 및 기타 설정 조정

실제 하드웨어에서 실행하기

  • 올바른 이더넷 드라이버 사용 및 네트워크 설정 변경
  • USB 드라이브에 통합 EFI 파일을 빌드하여 실제 하드웨어에서 테스트

결론

  • 이 프로젝트는 클라우드 네이티브 컴퓨팅의 가능성을 보여줌
  • SSH 또는 Git 저장소에서 Linux를 부팅하는 등 다양한 응용 가능성 존재

GN⁺의 의견

  • 이 프로젝트는 클라우드 네이티브 컴퓨팅의 가능성을 탐구하는 흥미로운 시도임
  • FUSE를 사용하여 Google Drive에서 Linux를 부팅하는 과정에서 발생하는 다양한 문제를 해결하는 방법을 배울 수 있음
  • 클라우드 기반 파일 시스템의 성능 및 안정성 문제를 고려해야 함
  • 비슷한 기능을 제공하는 다른 프로젝트로는 gitfs 등이 있음
  • 새로운 기술을 채택할 때는 성능, 안정성, 보안 등의 측면을 신중히 고려해야 함
Hacker News 의견
  • 이 기술을 "부팅"이라고 부르기에는 커널이 이미 부팅된 상태임

    • google-drive "마운팅" 지원이 grub에 추가되면 인정할 것임
    • 이는 rootfs를 이상한 장소에 배치하는 것임
    • 참고로, 내 프로젝트는 NixOS의 rootfs를 IPFS에 배치하는 것임
  • 과거에는 Sun Solaris를 HTTP를 통해 부팅할 수 있었음

    • 이를 wanboot라고 불렀음
    • SPARC 머신의 OpenBoot PROM 펌웨어 옵션이었음
    • 네트워크 부팅 설정 예시:
      ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi
      ok boot net
      
    • 이는 (인터)네트워크를 통해 initramfs와 커널을 로드함
    • 관련 문서 링크:
  • Linux를 bittorrent로 부팅하는 것은 어떨까?

    • nbdkit-torrent-plugin 예시
    • 문제는 높은 지연 시간의 장치에서 Linux를 부팅할 때 커널이 I/O 요청을 너무 빨리 타임아웃함 (약 60초)
    • 타임아웃 시간을 늘려야 함
  • 로컬 initramfs에서 몇 메가바이트의 rootfs를 부팅할 때 원격에서 부팅한다고 할 수 있을까?

  • 사람들이 정말 원하는 것은 특히 임베디드 시스템에서의 초단위 부팅임

    • 이는 어려운 문제지만, 이를 해결하기 위한 CS 연구에 관심이 없는 것 같음
  • S3에서 부팅하는 것을 언급함

    • Google Drive로 변경하면 지연 시간이 추가됨
    • 그래도 잘한 것임
  • 집에서 처음 케이블 모뎀을 설치했을 때, 부팅 플로피를 사용해 네트워크를 통해 BSD를 설치할 수 있었음

    • 당시에는 놀라운 일이었음
    • 오늘날에도 가능한지 확실하지 않음
    • 아마도 파일이 FTP나 TFTP에 호스팅되었을 것임
    • 오늘날에는 대부분 ISO 파일임
  • 비슷한 일을 한 적이 있음: Tumbleweed 설치 DVD의 RPM 저장소에서 부팅함

    • 초기 목표는 RPM 패키지를 마운팅하는 fuse 파일 시스템을 작성하는 것이었음
    • 얼마나 멀리 갈 수 있는지 확인하고 싶었음
    • 결과적으로 꽤 멀리 갈 수 있었음:
    • 시스템이 작동하는 데스크탑으로 부팅되고, DVD에 있는 모든 패키지가 설치된 것처럼 보임
  • Windows에서는 Citrix를 사용해 이를 자주 함

    • 이를 pvs라고 부름
    • 작은 pxe 부팅을 하고 Windows 서버 이미지를 스트리밍함
  • "정신이 혼미해지고, 수천 년의 프로그래머 시간과 광기의 비명 속에서 나의 걸작을 찾음"

    • 퓰리처상 후보감임