WSLはgitなどの処理速度に若干のオーバーヘッドを感じることがある.そこでUbuntu自体はVirtulBox上で走らせてWSLからssh越しで作業することにした.logon
,logoff
というコマンドをWSLから使うことで自動的にVMの起動とsshログインするようにした.
WSLからのVMの起動とsshログイン
3022にポートフォワーディングしてある.
logon
#!/bin/bash
vmstatus=`/mnt/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe list runningvms`
if [[ ! $vmstatus == *Ubuntu18* ]]; then
/mnt/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe startvm Ubuntu18 --type headless
else
echo "VM is already running."
fi
ssh -p 3022 -X user@127.0.0.1
WSLからのシャットダウン
logoff
#!/bin/bash
vmstatus=`/mnt/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe list runningvms`
if [[ $vmstatus == *Ubuntu18* ]]; then
/mnt/c/Program\ Files/Oracle/VirtualBox/VBoxManage.exe controlvm Ubuntu18 poweroff
else
echo "VM is already turned off."
fi
VcXsrvとの連携
ググるとWSLとVcXsrvの連携はよく出てくるが,VirtuaBoxとの連携にWSLを経由する方法はあまり見つからなかった.
まず初めにWindows上でのXLaunchにおいてdisplay numberとして1
(何でもよい)を,オプションとして-nowgl
を指定する.
WSL上で,.bashrc
にXLaunchで指定したdisplay numberを用いて環境変数を設定する.
export DISPLAY=localhost:1.0
そしてVirtualBoxにログインするときにsshに-Xオプションを付ける.
ssh -p 3022 -X user@127.0.0.1
X転送の速度を上げるため以下のような設定をしている.
ssh -p 3022 -XY4Cc aes128-ctr user@127.0.0.1
共有フォルダ
Windows上でC:\Users\Hoge\vm_ubuntu
というフォルダを作り自動マウントにチェックをつける.するとUbuntu上に/media/sf_vm_ubuntu
というフォルダができる.
sudo gpassword -a <user_name> vboxsf
とすることでUbuntuからもアクセスできるようになる.
sshしたときに.bashrcを読み込む
.bash_profile
に以下を書き込む
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi