FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-Vの開発環境をVagrantとChefで構築する (2. ChefにRISC-Vの環境をインストールする設定を記述する)

msyksphinz.hatenablog.com

の続き。ChefにRISC-Vのインストールする設定を記述していく。

基本的に、前回立ち上げたVagrantの環境(Vagrantfileがあるディレクトリ)の上に、RISC-VのChefの設定を置いていく。

$ knife solo init riscv-env

Vagrantfileの設定を変更する。参考にしたのは、

thinkami.hatenablog.com

$ emacs Vagrantfile
# Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # 以下をアンコメントします
  config.vm.network :private_network, ip: "192.168.33.10"
$ vagrant up
$ knife solo prepare vagrant@192.168.33.10 (途中でvagrantのパスワードを求められるので、"vagrant"と入力する)
$ vagrant halt
  • Recipe を作成する。

いよいよRecipe を作成する。

$ knife cookbook create riscv-env -o cookbooks
$ emacs riscv-env/cookbooks/ricsv-env/recipes/default.rb

Download - RISC-V

に書いてあることをChefで再現したい、という訳だ。

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf

上記は、Chefで以下のように記述する。

execute "update package index" do
  command "apt-get update"
  ignore_failure true
  action :nothing
end.run_action(:run)

log "done update"

packages = %w{autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf}
packages.each do |pkg|
  package pkg do
    action [:install, :upgrade]
  end
end

riscv-toolsのクローンはChefのgit機能を使って以下のように記述した。

$ git clone https://github.com/riscv/riscv-tools.git
$ cd $TOP/riscv-tools
$ git submodule update --init --recursive

上記は以下のように記述する。

git "/home/vagrant/riscv-tools" do
  repository "https://github.com/riscv/riscv-tools.git"
  revision "master"
  enable_submodules true
  action :sync
end

環境の構築。

bash "Set Environment of RISCV-tools" do
  code "sed -i 's/JOBS=16/JOBS=1/' /home/vagrant/riscv-tools/build.common"
  action :run
end

build.sh を実行する前に、環境変数を設定しておかなければならないので、

ENV['TOP']   = "/home/vagrant/"
ENV['RISCV'] = "/home/vagrant/riscv"
ENV['PATH']  = "/home/vagrant/riscv/bin:#{ENV["PATH"]}"

execute "Build RISCV-tools" do
  cwd "/home/vagrant/riscv-tools/"
  command "./build.sh"
  action :run
end

これらをまとめてChefに記述しておき、vagrant up もしくは vagrant provision で起動する。

現在環境構築試行中。。。うまくいってるかな?