布団が俺を呼んでいる

丘山大一のぶろぐ

Windows Server 2019 で Windows Subsystem for Linux 2 補足編

注意!
執筆時点で、Windows Server 2019 は公開停止中です。
ホスト、dockerイメージともに大幅に変わる可能性があります。

前回のWSL登録の補足。


手順その3のフォルダ決めの重要性について

フォルダを切ってexeを叩く、という操作をしているせいで、「ただexeを実行している」と感じますが、あくまでディストリビューションはWindows  Sub System for Linux の環境下にあります。
下記画像をご覧ください。


左側がデスクトップ上に置かれたフォルダ内にある「ubuntu1804.exe」を実行し、「ls」コマンドを叩いて「a.txt」を参照している状態です。
右側が別階層にある「ubuntu1804.exe」で実行し、「ls」を叩いている状態です。別exeを別パスで叩いているはずなのに、同じファイルを参照しています。

つまり、ubuntu1804.exe実行時に、別の環境変数が呼び出され、どのubuntu1804.exeを実行しようとも同じパスを見に行っているということになります。このパスは初回実行時に登録さるようです。
よって、初回実行時のフォルダを別の場所に移動させてしまうと、起動できなくなります。
下記はフォルダの千頭にアンダースコアをつけてから(リネームしてから)、「ubuntu1804.exe」を叩いた時のエラーです。


「指定されたパスが見つかりません。」となってしまいます。
※exe自体は参照できているので、ちょっと分かりづらいエラーですね
このパスは、レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss」以下に登録されているようです。




フォルダパスの変更

レジストリのbasepathを修正してしまえば、再度動作するようになることは確認しています。なので、困ったらパスを書き換えてしまうのも手です。
ただし、これは公式回答を見つけたわけではなく、「やってみたらできた」だけですし、今後のアップデートで状況が変わるかもしれません。(もしかしたら公式的にOKかもしれませんが、まだそのような表記を見つけていません)


wslの削除

やはり確実なのは、一度環境を削除してから再登録だと思います。
wsconfig.exeでディストリビューションを探し出し、削除(登録解除)します。
wslconfig.exe /l
wslconfig.exe /u ディストリビューション名



これで初期化されますので、自由にやりなおせます。


Ubuntuサーバー徹底入門

新品価格
¥4,104から
(2018/10/9 22:49時点)

コメントを書く