WSLはgitなどの処理速度に若干のオーバーヘッドを感じることがある.そこでUbuntu自体はVirtulBox上で走らせてWSLからssh越しで作業することにした.logonlogoffというコマンドを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を指定する.

link

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