ぱっとみは変わりません。
どちらもCドライブは/mnt/cに勝手にマウントされています。
違いをざっくりいうと、
WSLはLinuxのシステムコールをWindowsのシステムコールにいちいち変換しながら動作する。
WSL2は全てハイパーバイザで仮想化されて動作する。
です。
イメージ的には、WSLは仮想マシンよりもCygwinに近いみたいですね。
WSL2はもう完全に仮想マシンです。ただ、難しい設定なしでファイルシステムにアクセスできたりインターネットにつながったりと、Hyper-vより扱いは簡単です。
WSLはWindows上でLinuxのシェルを動かすことでLinuxのコマンドラインでの操作性をとり入れたかったように見えます。
DOSプロンプト→コマンドプロンプト→PowrShell→Bashという変遷となるでしょうか。
しかし、Linuxのシステムコールをすべて変換するのは困難だったのか、WSL2へ舵をきりました。
WSL2はただただ仮想マシンの上でLinuxが動くので、そのほかの仮想マシンと何ら変わりはありません。
ただ、最初からWindowsのファイルシステムが勝手にマウントされています。
ですので、インストールしたらすぐWindows上にあるファイルをgrepで検索したりできるわけです。
(こうなると、もうPowerShellイラネ となりますね。)
参考になるかわかりませんが、コマンド実行結果の違いを挙げてみます。
・freeコマンド
WSL→Windowsの物理メモリや仮想メモリ量が表示される。
WSL2→仮想マシンに割り当てられたメモリ量がLinuxの物理メモリとして表示される。
・ipコマンド
WSL→Windowsが持っているIPアドレスが表示される。(ほかにも内部通信用なのかたくさんIPを持っている。詳細は不明。)
WSL2→独自のIPを持っている。(NAPTされてインターネットへつながる。)
結論
grepやbashが使いたいだけなら、どっちでもいいですね。
WindowsをLinuxのCLIで動かしたいならWSL、Linuxを純粋なLinuxとして扱いたいならWSL2といったところでしょうか。
WSLについてはどの程度システムコールを変換してくれるかはマイクロソフトのやる気次第です。WSL2がメインになってくるとメンテナンスされなくなっていくのかもしれません。
どちらもCドライブは/mnt/cに勝手にマウントされています。
違いをざっくりいうと、
WSLはLinuxのシステムコールをWindowsのシステムコールにいちいち変換しながら動作する。
WSL2は全てハイパーバイザで仮想化されて動作する。
です。
イメージ的には、WSLは仮想マシンよりもCygwinに近いみたいですね。
WSL2はもう完全に仮想マシンです。ただ、難しい設定なしでファイルシステムにアクセスできたりインターネットにつながったりと、Hyper-vより扱いは簡単です。
WSLはWindows上でLinuxのシェルを動かすことでLinuxのコマンドラインでの操作性をとり入れたかったように見えます。
DOSプロンプト→コマンドプロンプト→PowrShell→Bashという変遷となるでしょうか。
しかし、Linuxのシステムコールをすべて変換するのは困難だったのか、WSL2へ舵をきりました。
WSL2はただただ仮想マシンの上でLinuxが動くので、そのほかの仮想マシンと何ら変わりはありません。
ただ、最初からWindowsのファイルシステムが勝手にマウントされています。
ですので、インストールしたらすぐWindows上にあるファイルをgrepで検索したりできるわけです。
(こうなると、もうPowerShellイラネ となりますね。)
参考になるかわかりませんが、コマンド実行結果の違いを挙げてみます。
・freeコマンド
WSL→Windowsの物理メモリや仮想メモリ量が表示される。
WSL2→仮想マシンに割り当てられたメモリ量がLinuxの物理メモリとして表示される。
・ipコマンド
WSL→Windowsが持っているIPアドレスが表示される。(ほかにも内部通信用なのかたくさんIPを持っている。詳細は不明。)
WSL2→独自のIPを持っている。(NAPTされてインターネットへつながる。)
結論
grepやbashが使いたいだけなら、どっちでもいいですね。
WindowsをLinuxのCLIで動かしたいならWSL、Linuxを純粋なLinuxとして扱いたいならWSL2といったところでしょうか。
WSLについてはどの程度システムコールを変換してくれるかはマイクロソフトのやる気次第です。WSL2がメインになってくるとメンテナンスされなくなっていくのかもしれません。
基本的には普通にCentOSにOpenStack(stain)を入れるのと同じ。
だけど、yumでインストールするバージョンが新しくなってしまって必要なバージョンがあわなくなる事象が。
これはtrainだけではなくて、stainでも同じことが起きます。
現状だと、leathermanが1.10がインストールされてしまいます。ダウングレードするか、一度removeして1.3にしないといけません。
※Error出力にはleashterman_curlの1.3がないといわれる
packstackをyumでインストールする前に、yum install leatherman-1.3.0-9el7.x86_64をしておけばよかったのかも。
あと、cinderがポート8776をリッスンしないので、/etc/cinder/cinder.confを編集した。
stainの場合はpackstackのバージョンは14、trainの場合は15。
メモリ4GBだと、reboot直後にやらないとメモリが足りなくて失敗するかも。
だけど、yumでインストールするバージョンが新しくなってしまって必要なバージョンがあわなくなる事象が。
これはtrainだけではなくて、stainでも同じことが起きます。
現状だと、leathermanが1.10がインストールされてしまいます。ダウングレードするか、一度removeして1.3にしないといけません。
※Error出力にはleashterman_curlの1.3がないといわれる
packstackをyumでインストールする前に、yum install leatherman-1.3.0-9el7.x86_64をしておけばよかったのかも。
あと、cinderがポート8776をリッスンしないので、/etc/cinder/cinder.confを編集した。
stainの場合はpackstackのバージョンは14、trainの場合は15。
メモリ4GBだと、reboot直後にやらないとメモリが足りなくて失敗するかも。