[画像] GoogleドライブからLinuxを起動する仕組みを構築したエンジニアが登場



アメリカ合衆国の名門校であるパデュー大学でコンピューターサイエンスを学んでいる「Ersei」氏が、GoogleドライブからLinuxを起動することに成功したとブログに投稿しました。

Booting Linux off of Google Drive | Ersei 'n Stuff

https://ersei.net/en/blog/fuse-root



Ersei氏は競争心が強く、友人がNetwork File System(NFS)からLinuxを起動するのに成功したと聞いた時「もっと難しくて、もっと良くて、もっと速くて、もっと強いものを作れると証明しなければ」と考えたとのこと。さまざまなアイデアを検討した結果、「GoogleドライブからLinuxを起動する」というプロジェクトにチャレンジすることに決めました。

Linuxの起動時には次の処理が行われています。

1:UEFIかBIOSが起動し、ブートローダーをロードする

2:ブートローダーがカーネルをロードする

3:カーネルが一時的なファイルシステムをメモリ上に展開

4:メモリ上のシステムを使用してカーネルが実際のファイルシステムをマウントして切り替える

Ersei氏のアイデアは上記の3・4の段階でユーザが独自のファイルシステムを作成できるFilesystem in Userspace(FUSE)を使用してネットワーク越しに実際のファイルシステムをマウントするというもの。上記の「3」段階の一時的なファイルシステムはカーネルのinitramfsを使用するため、Ersei氏はinitramfsにFUSEをインストールしてネットワーク越しにファイルシステムを構成するだけで良いと考えたそうです。

Ersei氏はまず概念実証としてdracutを使用してinitramfsをカスタマイズし、Arch Linuxのルートを保存しているローカルのS3バケットに接続するよう設定してLinuxを起動しました。



システム情報を確認すると無事S3バケットがファイルシステムとしてマウントされています。



概念実証ができたのでErsei氏はGoogleドライブでの起動に取りかかりました。FUSEでGoogleドライブを使用するためのツールは既に存在していたため、Ersei氏はこのツールを使用することに決定。Arch Linuxのマシンを用意してパッチを当て、Googleドライブにアップロードして準備を整えました。



起動を試してみたところ、シンボリックリンクへのシンボリックリンクやハードリンク、相対シンボリックリンクが機能しなかったり、権限が存在しなかったり、ものすごく動作が遅かったりするという問題が発生。

Ersei氏はシンボリックリンクをリンク先のパスに置き換えたり、タイムアウト時間を長くしたりすることで対応。長い時間がかかったもののシステムの起動に成功しました。



システム情報を見るとGoogleドライブがマウントされていることが表示され、GoogleドライブからLinuxを起動するチャレンジを達成できました。