Google DriveからLinuxを起動する
しかし、どうやって?
- 補助デバイスなしで独力で解決したかった
- FUSEを使い、ユーザー空間でファイルシステムドライバーとして動作するように設定
- FUSEプログラムをLinuxカーネルのinitramfsに組み込み、ネットワークを構成する必要があった
Linuxの起動プロセス
- ファームウェア(BIOS/UEFI)がブートローダーを起動して読み込む
- ブートローダーがカーネルを読み込む
- カーネルが一時ファイルシステムをRAM上に展開し、実際のファイルシステムをマウントするためのツールを提供する
- カーネルが実際のファイルシステムをマウントし、プロセスを新しいファイルシステム上で動作する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件のコメント
Hacker Newsのコメント
この技術を「ブート」と呼ぶには、カーネルがすでに起動済みである
google-driveの「マウント」対応が grub に追加されたら認める以前は Sun Solaris を HTTP 経由でブートできた
Linux を bittorrent でブートするのはどうだろう?
ローカルの initramfs から数MBの rootfs をブートする場合、それをリモートからのブートと言えるだろうか?
人々が本当に望んでいるのは、特に組み込みシステムにおける秒単位の高速ブートである
S3 からブートすることに言及している
家で初めてケーブルモデムを設置したとき、ブートフロッピーを使ってネットワーク経由で BSD をインストールできた
似たようなことをしたことがある: Tumbleweed インストール DVD の RPM リポジトリからブートする
Windows では Citrix を使ってこれをよく行う
「意識が朦朧とし、何千年分ものプログラマーの時間と狂気の悲鳴の中で、私は自分の傑作を見つける」