Project

General

Profile

VagrantでOpenRTP20用boxファイルを使ってビルド環境を構築する

環境整備

VirtualBoxとVagrantが必要です。ここではWindows10上への構築手順を紹介しますが、Linux上でも構築可能なはずです。

2021/05/06現在、VartualBox6.1.22 + Vagrant2.2.16 でOKを確認

  • インストール
    • VirtualBox
      • 途中で「デバイスソフトウエアをインストールしますか?」と聞かれますので、インストールを選択
    • Vagrant
      • インストール先はデフォルトのパスのまま
      • OS再起動後、コマンドプロンプトを立ち上げてバージョンやHelpが表示されることを確認しておく。
        初回はHelpが表示されるまで待たされる場合があります。
        >vagrant -v
        Vagrant 2.2.9
        
        >vagrant --help
        
    • Vagrantプラグインのインストール
      • VM環境のディスクサイズを拡張するため vagrant-disksize プラグインをインストールする
        >vagrant plugin install vagrant-disksize
        
      • このプラグインをインストールしてあることで、Vagrantfileに記載されているVM環境のディスクサイズを簡単に拡張できます
      • デフォルトで32GBのディスクサイズにしていますので、すぐ拡張する必要はありませんが、 このプラグインをインストールしないとエラーになります
  • (おまけ)VMのディスクサイズ拡張手順
    ・VM環境をシャットダウンする
     >vagrant halt
    
    ・Vagrantfileのディスクサイズを書き換える
     DISK_SIZE = "50GB" <-- ★ここ
    
    ・VM環境を起動する
     >vagrant up
    
    ・起動後にVirtualBoxマネージャーのストレージ欄を見ると、ディスクサイズが拡張されていることを確認できる
    

VM環境構築

  • OpenRTPのmasterソースに含まれる下記Vagrantfileを使用する
    OpenRTP-aist/scripts/openrtp20-eclipse416/Vagrantfile
    openrtp20-eclipse416
    │
    │  Vagrantfile
    │
    └─scripts
           linux-make_packages.sh
           src_build_script.sh
           win32-make_packages.sh
    
  • このディレクトリで作成する必要は無いので、openrtp20-eclipse416 を適当な場所へコピーして使うとよいです
  • 下記を実行。ベースのvagrant boxファイル(約5GB)を下記からダウンロードするので、時間がかかります。
    https://openrtm.org/pub/openrtp/vagrant-box/openrtp20-eclipse416.box
    >cd openrtp20-eclipse416
    >vagrant up
    
  • エラーメッセージが出ずに終了していればOKです
  • VM環境へはsshで接続します(パスワード:vagrant)
    >vagrant ssh openrtp20-eclipse416
    
    • 「openrtp20-eclipse416」はVM名です。これはVagrantfileで定義しています
      VM_NAME = "openrtp20-eclipse416" 
      
    • vagrant global-staus コマンドで、現在起動(vagrant up)しているVM環境を確認できるので、ここからもVM名がわかります
      >vagrant global-status
      

OpenRTPのビルド手順

  • sshで接続したHOMEディレクトリにデフォルトで存在するファイル、ディレクトリは削除しないで下さい
  • HOME下にsrcディレクトリを作成した場合の手順は下記となります
    $ mkdir src
    $ cd src/
    $ git clone https://github.com/OpenRTM/OpenRTP-aist
    $ cd OpenRTP-aist/
    
    ビルド時に使用するスクリプトをコピーします
    $ cp ~/scripts/*.sh .
    
    ソースビルド
    $ ./src_build_script.sh
    
    Windows用全部入りパッケージ生成
    $ ./win32-make_packages.sh
    
    • 全部入りパッケージのLinux用スクリプトは「linux-make_packages.sh」です
  • packages下に生成されます
    $ ls packages/
    

ホスト環境との共有フォルダ

  • shareフォルダを共有フォルダとして設定しています。ここにファイルを置けば、簡単にVMとホスト間でやり取りできます
  • VM環境では $HOME/share で、ホスト環境は Vagrantfile と同じディレクトリに存在します
  • scp を使う場合
    • ホストがWindows環境の場合、powershellのscpコマンドがデフォルトで使えます
    • hoge.txtをWindows側からVM側へコピーする場合、Vagrantfileに定義しているポート番号を使います
      >powershell
      >scp -P 22042 hoge.txt vagrant@localhost:/home/vagrant
      

トラブル対応

vagrant upできない

2020/07/21記

  • 「Failed to attach the network LUN」のエラー
  • Windows10 2004へアップデート後に発生
    > vagrant up
      :
    There was an error while executing `VBoxManage`, a CLI used by Vagrant
    for controlling VirtualBox. The command and stderr is shown below.
    
    Command: ["startvm", "6e01062d-a75b-4bdc-8fd2-751e8ba06dee", "--type", "headless"]
    
    Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #4' (VERR_INTNET_FLT_IF_NOT_FOUND).
    VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
    VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole