Kernel / VM 関西9 - WSL FUSE: WSLでもFUSEしたかった
- 5. もくじ
1. WSL (Windows Subsystem for Linux)とは?
2. FUSEとは?
3. FUSE on WSL事情
4. 最近のWSLアップデートについて
5. WSL on FUSE by WinFSP
6. 完成しませんでした
7. Future Work
8. WinFSPを経由することによる制限
- 7. Windows Subsystem for Linux?
• Microsoftが最近出した過激なやつ
• LinuxのバイナリをWindowsでそのまま動かすことができる
• Linux Distributionのユーザー空間がWindowsでそのまま動く
- 13. FUSE?
• Filesystem in Userspaceの略
• open/read/write/statfsなどのVFS operationsをユーザー空間で
書くと、実際のFSとして動かせる
• Kernel/VMなので多分こっちの方がWSLより詳しい人が多い
https://ja.wikipedia.org/wiki/Filesystem_in_U
serspace#/media/File:FUSE_structure.svg
- 16. FUSE on WSL事情
• WSLでは今のところFUSEは使えません
• なぜならFUSEはLinux用のカーネルモジュールを動かす必要があるから
• 特にsshfsが使えないから結構みんな困ってる
• 回避手段は特になし!
なんとかして一応動かしたい!
- 17. 救世主・最近のWSLアップデート
• Fall Creators Update以降、
WSLはWindows側の
interoperabilityが向上
• Windowsのネットワーク
ドライブがマウントでき
るようになった
• ⇒Windows側でFUSEをや
れば、それをネットワー
クドライブとしてマウン
トできる!
https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-
improvements-to-the-windows-subsystem-for-linux/
- 18. WSL FUSE 概略
1. WSL側でLibfuseと互換性のあるLibwslfuse(仮)を提供する
2. LibwslfuseはWindows側でヘルパープロセスを起動して、それ
とUnixソケットでIPCすることで、Windows側のFUSEライブラ
リを利用してWindows側にFUSE FSを作成
3. 2で作ったWindows側のFUSE FSを、Windowsのネットワーク
共有でWSL側にマウントする
- 19. WSL FUSE: 概要図
Target FUSE FS Target FUSE FS
Win32 FUSE Library
WSL FUSE Winコンポーネント LibWSLfuse
Target FUSE App
IPC
(gRPC)
Mount
Windows側 WSL側
- 27. Future Workと妄想
• Libwslfuse部分を完成させる
• Passthrough FSなんだが、Linuxのバイナリを呼び出す.exeの
ラッパーを噛ませるFSの作成
• ⇒Linuxのバイナリが.exeとして実行できるようになれば、VS CodeやCLion
とかからWSLの環境を使えるようになるのでは??
• あとなんかSMBはioctlに対応してるっぽいので、Windows
Hypervisor Frameworkとのラッパーを書けば多分/dev/kvmが
WSL上で作れる