(画像はriscv.org, freebsd.orgより拝借)
前回、FreeBSD 11.0のRISC-V環境構築を試行したのだが、うまく行かなくて止まってしまっていた。
結局RISC-Vのメーリングリストに質問して、うまく行く方法が分かった。Vagrantの環境を構築したので、メモしておく。
Vagrant上のFreeBSD 11.0の仮想マシンに、RISC-Vアーキテクチャ向けFreeBSDをビルドする手順
まず、FreeBSDは標準のシェルがcshになっている。このためvagrant provision
する際の実行シェルがbash
になっている?影響で、最初はうまく動作しない。
そこで、vagrant up
してから一度vagrant ssh
でFreeBSDにログインし、bash
をインストールしてからプロビジョニングを実行することになる。
vagrant up vagrant ssh # ここからVagrant内のFreeBSDで作業 % sudo pkg install -y bash Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. The following 1 package(s) will be affected (of 0 checked): New packages to be INSTALLED: bash: 4.4 Number of packages to be installed: 1 The process will require 8 MiB more space. 1 MiB to be downloaded. Fetching bash-4.4.txz: 100% 1 MiB 1.5MB/s 00:01 Checking integrity... done (0 conflicting) [1/1] Installing bash-4.4... [1/1] Extracting bash-4.4: 100% Message from bash-4.4: ====================================================================== bash requires fdescfs(5) mounted on /dev/fd If you have not done it yet, please do the following: mount -t fdescfs fdesc /dev/fd To make it permanent, you need the following lines in /etc/fstab: fdesc /dev/fd fdescfs rw 0 0 ======================================================================
こうしてbashをインストールしてから、改めてプロビジョニングを実行することになる。
結局、いろいろメーリングリスト上でディスカッションした結果、
setenv WITHOUT_SHAREDOCS yes setenv MYOBJDIR "/home/vagrant/obj/riscv.riscv64/home/vagrant/freebsd-riscv/"
の部分で変更が必要なようだ。これらを全てprovision.csh
として保存し、プロビジョニングで呼ばれるようにした。
僕のPC(Core-i7 3GHz, 16GB)をして約1時間かかる。やっぱり環境構築は大変だなあ。途中でプロビジョニングがタイムアウトすることがあるが、何回かvagrant provision
を叩いていると最後まで完了する。