「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>Windows Subsystem for Linux]] * 目次 [#u4c2c815] #contents *概要 [#m00e4b8b] ファイルシステム、環境変数、プログラム実行辺りの話。 *詳細 [#a29a8bc1] **相互運用の有効化・無効化 [#t277e96d] ***有効化 [#rd2445a4] $ echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop ***無効化 [#zac36c93] $ echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop **ファイルシステム [#y77443bf] ***DrvFs [#jc2d54b9] WSL環境にWindowsのボリュームをマウントし、~ -WSL環境にWindowsのボリュームをマウントし、~ LinuxからWindowsのファイルにアクセスできるようにする仕組み。 -以下のようなパスで、Windowsのボリュームにアクセス出来る。 $ dir /mnt c d $ dir /mnt/c ... ***P9 [#vca1ff79] [[WSL2>Windows Subsystem for Linux#t1ddb916]]から、[[DrvFs>#jc2d54b9]]は、P9に置き換えられる。 ***rm -rf / [#nef4f08d] ということなので、WSLで「rm -rf /」を実行すると、~ Windowsのファイルが削除されWindowsが壊れるという話がある。 -実行してはいけないLinuxコマンド(3)~ Windows 10 WSLで『rm -rf /』を実行 | マイナビニュース~ https://news.mynavi.jp/article/dont_run_on_linux-3/ ※ [[WSL2>Windows Subsystem for Linux#t1ddb916]]については、P9の仕様次第。 ***参考 [#s93786b1] -WSLでWindows側のドライブをマウントする方法~ 株式会社シーポイントラボ | 浜松のシステム開発会社~ https://cpoint-lab.co.jp/article/201904/9153/ -Windows 10からWSL上のLinuxファイルへ~ 読み書き可能に、4月に予定のアップデートで - Publickey~ https://www.publickey1.jp/blog/19/windows_10wsllinux4.html ※ [[kledgeb>#tbdfa959]] **環境変数の共有 [#za295a68] ***17063以前 [#o32619cf] wsl がアクセスできる Windows 環境変数はPATHのみ。 ***17063以降 [#jb80c201] WSLENVはブリッジのための特殊な環境変数。 C:\>set WSLENV=USERPROFILE:USERNAME C:\>wsl seigi@nishino:/mnt/c/Users/nishi$ echo $WSLENV USERPROFILE:USERNAME **コマンド [#a71612ab] ***Windows → WSL [#c0e43cad] wsl.exeを使用してCMD または PowerShellから Linux バイナリを実行 wsl.exe <command> -wsl でのコマンド実行と同様に処理される。 -sudo、パイプ、ファイルリダイレクトなどが機能する。 -例 --バイナリ ---lsコマンド wsl ls -la --パイプ ---ls(Linux)をfindstr(Windows)にパイプ c:\> wsl ls -la | findstr "root" ---dir(Windows)をgrep(Linux)にパイプ c:\>dir | wsl grep root ***WSL → Windows [#l41e48e1] -Windows バイナリには、ファイル拡張子が含まれている必要がある。 -また、ファイルの大文字と小文字が一致している必要がある。 -例 --バイナリ ---notepad $ notepad.exe --パイプ ---ls(Linux)をfindstr(Windows)にパイプ $ ls -la | findstr.exe "root" drwxr-xr-x 1 root root 512 May 8 2018 .. drwxrwxrwx 1 seigi seigi 512 May 8 2018 wwwroot ---ipconfig(Windows)をgrep(Linux)にパイプ $ ipconfig.exe | grep IPv4 IPv4 Address. . . . . . . . . . . : 10.0.75.1 IPv4 Address. . . . . . . . . . . : 192.168.179.2 IPv4 Address. . . . . . . . . . . : 172.17.68.193 *参考 [#y55d5d65] -Windows と Linux の相互運用性 | Microsoft Docs~ https://docs.microsoft.com/ja-jp/windows/wsl/interop **[[WindowsとWSL間の接続]] [#sa0a1b77] **kledgeb [#tbdfa959] -kledgeb: WSL~ https://kledgeb.blogspot.jp/search/label/WSL?max-results=10 ***相互運用 [#a516035a] -その52 - BashからWindowsバイナリーを起動する機能の有効・無効を切り替えるには~ https://kledgeb.blogspot.jp/2016/10/wsl-52-bashwindows.html -その53 - WindowsとBashの相互運用~ https://kledgeb.blogspot.jp/2016/11/wsl-53-windowsbash.html -WindowsとUbuntuの相互運用の仕組み --その54 -(前編)~ https://kledgeb.blogspot.jp/2016/11/wsl-54-windowsubuntu.html --その55 -(後編)~ https://kledgeb.blogspot.jp/2016/11/wsl-55-windowsubuntu.html ***ファイルシステム [#ve679160] -UNIXソケット --その131 - Build 17093のWSLに関する変更点・UNIXソケットによる相互運用の改善とWSLの自動設定機能の追加~ https://kledgeb.blogspot.com/2018/02/wsl-131-build-17093wslunixwsl.html --その132 - WindowsとWSL間でUNIXソケットを利用した通信が可能に - kledgeb~ https://kledgeb.blogspot.com/2018/02/wsl-132-windowswslunix.html -ファイル --1903未満 ---WSLがサポートするファイルシステム >その26 -(前編)LinuxのファイルシステムとWindowsのファイルシステム~ https://kledgeb.blogspot.jp/2016/06/wsl-26-wsllinuxwindows.html~ その27 -(後編)WSLのファイルシステム~ https://kledgeb.blogspot.jp/2016/06/wsl-27-wslwsl.html ---その60 - WindowsアプリからUbuntu環境内のファイルを決していじってはならない~ https://kledgeb.blogspot.jp/2016/11/wsl-60-windowsubuntu.html ---その109 - LinuxからWindowsのファイルにアクセスできない不具合~ https://kledgeb.blogspot.jp/2017/08/wsl-109-linuxwindows.html --1903以後 ---その167 - WindowsからLinuxのファイルにアクセスする仕組み(Windows 10 version 1903)~ https://kledgeb.blogspot.com/2019/02/wsl-167-windowslinuxwindows-10-version.html ---- Tags: [[:Windows]], [[:Linux]], [[:Linuxサブシステム]], [[:仮想化]]