1 ポイント 投稿者 GN⁺ 2024-07-03 | 1件のコメント | WhatsAppで共有

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 などがある
  • 新しい技術を採用する際は、性能、安定性、セキュリティなどの観点を慎重に検討すべき

1件のコメント

 
GN⁺ 2024-07-03
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 から数MBの rootfs をブートする場合、それをリモートからのブートと言えるだろうか?

  • 人々が本当に望んでいるのは、特に組み込みシステムにおける秒単位の高速ブートである

    • これは難しい問題だが、これを解決するための CS 研究には関心がないようだ
  • S3 からブートすることに言及している

    • Google Drive に変えるとレイテンシが追加される
    • それでもよくやった
  • 家で初めてケーブルモデムを設置したとき、ブートフロッピーを使ってネットワーク経由で BSD をインストールできた

    • 当時としては驚くべきことだった
    • 今日でも可能かどうかはわからない
    • おそらくファイルは FTP か TFTP でホストされていたのだろう
    • 今ではほとんどが ISO ファイルだ
  • 似たようなことをしたことがある: Tumbleweed インストール DVD の RPM リポジトリからブートする

    • 当初の目標は、RPM パッケージをマウントする fuse ファイルシステムを書くことだった
    • どこまで行けるのか確かめたかった
    • 結果的にかなり先まで行けた:
    • システムは動作するデスクトップとして起動し、DVD 上のすべてのパッケージがインストールされているかのように見える
  • Windows では Citrix を使ってこれをよく行う

    • これを pvs と呼ぶ
    • 小さな pxe ブートを行い、Windows サーバーイメージをストリーミングする
  • 「意識が朦朧とし、何千年分ものプログラマーの時間と狂気の悲鳴の中で、私は自分の傑作を見つける」

    • ピューリッツァー賞候補ものだ