aster_ismの工作室

FPGAとかマイコンとか

Google ColaboratoryでいつでもどこでもFPGA開発(セットアップ高速化編)

以前紹介した方法でColab上にVivadoをインストールすることはできます。ただ、実行時に毎回インストールするのは面倒くさいので、予めインストールしたデータ(ext4のイメージ)をマウントすることを検討します。

ローカルでの準備

ローカルでExt4で初期化されたイメージを準備して、Vivadoのインストールデータをコピーする(イメージのサイズは必要に応じて設定する)

$ truncate -s xxxxMiB Xilinx_2018.2.img
$ sudo losetup -f Xilinx_2018.2.img
$ sudo mkfs.ext4 /dev/loop0
$ sudo mount /dev/loop0 /mnt/tmp/
$ sudo mkdir -p /mnt/tmp/Vivado
$ sudo cp -ravf /opt/Xilinx/Vivado/2018.2 /mnt/tmp/Vivado
$ sudo losetup -d /dev/loop0
$ umount /mnt/tmp/Vivado

イメージデータはGoogle Driveに転送しておく

Colab上でext4fuse をビルドする

!apt-get install libfuse-dev
!git clone https://github.com/gerard/ext4fuse
%cd ext4fuse
!make

なお、ビルドしたext4fuseGoogle driveにコピーしておくと、ext4fuseのビルド作業は省略できる

イメージをマウントする

!mkdir -p /opt/Xilinx/Vivado
!ext4fuse -o allow_other "/content/drive/My Drive/tools/Xilinx_2018.2.img" /opt/Xilinx/Vivado

実行

あとはいつも通り、tcl/batchモードでVivadoを起動する。が、Google Driveから読み込んでいるせいか、待ってもなかなか起動しないことがある。一度起動すれば、問題なさそうだけど…

その他

/dev/loop0がないので、普通にマウントすることはできないが、fuse は使える。aptfuseext2 を入れたけどマウントできなかったので仕方なく、読込み専用だけどext4fuseをビルドした。fuseisoaptでインストールできて、使えることを確認した。

実際にはGoogle Diriveの1ファイルの容量制限を回避するためにimgファイルは複数に分割している。