#はじめに
研究室のパソコン、ノートパソコン、自宅のパソコンはすべてWindoes10 + WSL2 + Windows terminalを使っていたのだが、設定(コンパイラ、プログラム, vimrcなど)の共有があまりにも面倒くさいのでなにかないかな、と探していたところ以下のサイトを発見。
WSL2はdockerコンテナみたいimport, exportが自在にできるようです。(嬉しい)
以下、備忘録として共有します。
#環境
Windows 10 Home
WSL2 (Ubuntu20.04)
ターミナル: Windows terminal
#export
研究室PCにて、Ubuntu20.04 (共有したいlinux) をlabuntu.tar (名前は任意) ファイルに出力。
wsl --export Ubuntu-20.04 ./labuntu.tar
私の環境ではimport完了まで数分かかりました。ドキドキ。
(このコマンドだと何も進捗表示されません)
#import
さきほどの.tar(数GBになった)を研究室PCからノートパソコンに持っていった。
以下ノートPCのpowershellにて
mkdir ~/AppData/Local/labuntu
wsl --import labuntu ~/AppData/Local/labuntu ./labuntu.tar --version 2
こちらもexportと同様import時に数分待ちました。
wslコマンドを打つとき --version2を打ち忘れましたが wsl -l -vで確認したらちゃんとWSL2でimportされているみたいでした。
一応ここでimport自体は完了ですがこのままだと少々厄介なことが起きます。
#厄介な仕様
ログインするとなぜか強制的にrootログインになってしまう謎事象。
https://tech-drive.net/pc/2018062701/
こちらの分かりやすい記事を参考させてもらい、powershellから設定変更をかける。
Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
WSL-SetDefaultUser labuntu kojihattori
一行目は有志の方がつくられた関数みたいですね。
・参考 https://github.com/Microsoft/WSL/issues/3974
二行目distro-name とusernameは適宜読み替えてください。
また、WSL2のホームディレクトリがデフォルトではwindows側のホームディレクトリになってしまうので、windows terminalのGUIから”デレクトリの開始”を設定変更。
以上でok。
<おまけ>
WSLのimport後に強制的にrootユーザになったとき、suで通常のユーザには戻れるが通常ユーザからsuでrootに戻れない。。パスワードなんだっけ。。?ということがあった。
結論から言うとWSLではrootユーザのパスワード初期設定がなく、絶対にsuがauthentication failureになるとのことでした。 (https://matsudamper.hatenablog.com/entry/2020/01/06/173939)