start-jsk / rtmros_choreonoid

using chreonoid for simulator with hrpsys and other ros system
9 stars 43 forks source link

WSL で動かす方法 #342

Open k-okada opened 3 years ago

k-okada commented 3 years ago

choreonoid を wsl で動かす方法はどうしたらよいでしょうか?

@kindsenior

k-okada commented 3 years ago

wsl 1 -> wsl 2 に移動するにはどうしたらよいでしょうか?

YoheiKakiuchi commented 3 years ago

ちょっと求められてるのと違う気もしますが、docker for windowsはどうでしょうか。 https://docs.docker.jp/docker-for-windows/install.html

以下から、docker-compose.yaml をダウンロードして、 https://gist.github.com/YoheiKakiuchi/11757132d13ce5433bdbb392c76dac60

以下で開始します。(1回めはイメージダウンロードするのでそれなりに時間がかかる)

docker-compose -f docker-compose.yaml up

ブラウザから接続できるxサーバーを使っているので、chromeなどで localhost:3000 に接続すると、画面が見れます。 linuxとwindowsで動作確認できてます。多分macでも大丈夫なのではないかと。

このxサーバーを使って、P50(linux)でシミュレーションが2.5倍くらい遅い、 P50でネイティブのxserverのnvidiaで、シミュレーションが1.37倍くらい遅い。 非力なwindowsだともっと遅くなりそう。

スクリーンショット (3)

kindsenior commented 3 years ago

遅くなりました

基本的に普通にWSL2をインストールすればいいので,調べて出てくる内容と同じかと思います Hyper-Vを使うのでVirtualBox等の他の仮想マシンが時々落ちるようになりますが,最近は大分,改善されている気がします

  1. VcXsrvのインストール(chocolatyがない場合は手動でインストール)

    choco install vcxsrv -y
  2. VcXsrvの設定と自動起動化(このZIPのconfig.xlaunchを%conf_file%とする)

    set conf_file=%USERPROFILE%\Documents\config.xlaunch
    set command_str=C:\PROGRA~1\VcXsrv\xlaunch.exe -run %USERPROFILE%\Documents\config.xlaunch
    reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v VcXsrv /t REG_SZ /d "%command_str%" /f
  3. WSLのインストールのための設定

    dism /online /Enable-Feature /FeatureName:Microsoft-Hyper-V-All /NoRestart
    rem Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    dism /online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux /NoRestart
  4. WSL2のインストールのための設定

    
    dism /online /Enable-feature /Featurename:VirtualMachinePlatform /all /norestart

set update_msi=%USERPROFILE%\Downloads\wsl_update_x64.msi curl https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -o %update_msi% powershell -command "start-process powershell -wait -verb runas -argumentlist {-command msiexec /i %update_msi%}"


5. PCを再起動する

6. 変数を設定する

set ubuntu_ver_dot=18.04 set wsl_name= set wsl_user= set wsl_dir=c:\wsl\

set ubuntu_ver_dot=%ubuntu_ver_dot:~0,5% set ubuntu_ver=%ubuntu_ver_dot:~0,2%%ubuntu_ver_dot:~3,2% set org_ubuntu_name=Ubuntu-%ubuntu_ver_dot% if not exist %wsl_dir% mkdir %wsl_dir%

7.1 WSL1のインスタンスを作成する(Windowsストアから手動でインストールしてもよい)

set appfile=%USERPROFILE%\Downloads\wsl-ubuntu-%ubuntu_ver%.appx if not exist %app_file% curl -L https://aka.ms/wsl-ubuntu-%ubuntu_ver% -o %app_file%

PowerShell -command "Add-AppxPackage %app_file%"

ubuntu%ubuntu_ver% run exit

7.2 WSL1からWSL2へ変換する

wsl --set-version %org_ubuntu_name% 2 wsl --set-default-version 2

set tar_name=%USERPROFILE%\Downloads\%wsl_name%.tar

wsl --export %org_ubuntu_name% %tar_name% wsl --unregister %org_ubuntu_name% wsl --import %wsl_name% %wsl_dir%\%wsl_name% %tar_name%

powershell -command "Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss*\ DistributionName | Where-Object -Property DistributionName -eq %wsl_name% | Set-ItemProperty -Name DefaultUid -Value ((wsl -d %wsl_name% -u %wsl_user% -e id -u) | Out-String)"

8. WSL内で以下の設定をする

wsl.conf (必須)

exclude Windows path from PATH

sudo sh -c 'echo "[interop]" > /etc/wsl.conf' sudo sh -c 'echo "appendWindowsPath = false" >> /etc/wsl.conf'

mount windows file system with metadata (おすすめ)

sudo sh -c 'echo "[automount]" >> /etc/wsl.conf' sudo sh -c 'echo "options = \"metadata\"" >> /etc/wsl.conf'

updatedb (おすすめ)

remove /mnt from updatedb's search path

sudo sed -i -e 's#^(PRUNEPATHS=.*)"#\1 /mnt"#' /etc/updatedb.conf


9. bashrcに以下を追加する

GUI

unset LIBGL_ALWAYS_INDIRECT export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 # need to accept VcXsrv in public networks when setting firewall

openrtm

\rm /tmp/omninames-* 2>/dev/null



10. WSL内で通常のUbuntuの環境構築をする
k-okada commented 3 years ago

ありがとう.ちなみに普通にWSLでUbuntuを入れたときは以下の画像のように「WSLにチェック」→「再起動」→「ストアでインストール」だったんだけど, 普通にWSL2をインストールも同じようにできないのかな?

それともストアでインストールした後に,1-10をやるのかな?それとも,すとーあでインストールの代わりが3-7のコマンドなのかな.

キャプチャ

kindsenior commented 3 years ago

ストアでのWSL1のインストール手順は7.1のset appfile=%USERPROFILE%\Downloads\wsl-ubuntu-%ubuntu_ver%.appx からubuntu%ubuntu_ver% run exitまでに該当します (7を7.1と7.2に分離しました)

kindsenior commented 3 years ago

すみません

  1. WSL内で以下の設定をする(必須ではない)

に必須な部分があったので一部修正しました(ご存知かもですが,その設定がないとcatkin buildが動きません)

k-okada commented 3 years ago

wslでemacs & すると日本語が入力できない,と言われたんだけど,どうしている?emacs -nw だと出来るらしい。

kindsenior commented 3 years ago

すみません,見逃してました

僕はCUI派なので-nwしか使ってませんでしたが,ctrl-\だと日本語入力できる気がしますが, 半角/全角キーとかを押すと is undefinedみたいなエラーが出ることを指してますか?

その場合は入力メソッドに何を使うかというので変わりそうですが,fcitxの場合以下でできそうです

# install input method you want to use
sudo apt install fcitx-skk # fcitxが入ってなくてもできたので不要?
fcitx # launch inpout method tool(↑と同様に不要?)

sudo apt install x11-xserver-utils # disable repeated hits of henkan in windows # 不要かも

以下を.bashrc等に追加(profileの方が的確かも)

# settings for fcitx
IM=fcitx
export XMODIFIERS="@im=$IM"
export GTK_IM_MODULE=$IM # 不要かも
export QT_IM_MODULE=$IM # 不要かも
export NO_AT_BRIDGE=1 # 不要かも

xset -r 49 # disable repeated hits of henkan in windows(不要かも)

fcitxの例 ibusの場合はこんな感じ?(試してない)