以前構築したXilinx用 docker環境の記憶を掘り起こしてメモしておく。あくまでも記憶を掘り起こして書いているので、現時点で正確な情報ではないかもしれない。あと、dockerを使った環境構築は2年ぐらい前にやって、最近は使ってないのでdocker自体も色々変わっているかも(時間があったら確かめてみる)
概要
EDAツールはどうしても旧世代なツールを要求されることがある(古いgccだったり、python2.xだったり)。真面目に現在の環境を破壊しないようにして切替えられるようにインストールすることは可能だが、面倒くさいのでdockerを使って専用のimageを作成しておくと便利だったりする。
ただ、EDAツールを含めたimageを作成するのは次の点からあまりおすすめしない。
- imageサイズが大きくなりすぎる(特にVivado+Petalinuxをフルデバイスでやると80GBぐらいになる)
- 恐らくimageを公開できない(ライセンス的に
ということで、私の場合、EDAツールが要求するライブラリ等をdocker imageに入れ、EDAツール本体やデータの保存先はマウントしたホスト環境置くようにしている。イメージ的には下記のような感じ。
環境構築手順
予め /tmp
にVivadoのインストーラとかをダウンロードして置いておく。dockerグループに作業ユーザを追加しておく(おすすめはされてないですけど)。
下記のようなDockerfileを準備する
FROM ubuntu:18.04 RUN apt-get update && apt-get install xxx # 必要なものをインストールする CMD /bin/bash
普通にBuildを行う。
$ docker build -t local/xilinx:2018.2 .
Vivadoのインストール先(/opt/Xilinx
)とインストールデータを置いているディレクトリ(/tmp
)をコンテナと共有する。
$ docker run -it --rm -v /opt/Xilinx:/opt/Xilinx -v /tmp:/tmp local/xilinx:2018.2
いつも通りインストール。
(container)$ cd /tmp/Vivado (container)$ ./xsetup --agree XilinxEULA,3rdPartyEULA,WebTalkTerms --batch Install --config /tmp/install_config.txt
Vivado実行時
Vivadoのインストール先(/opt/Xilinx
)と作業ディレクトリ(/home/aster_ism
)をコンテナと共有する。あと、作業ディレクトリに作成されるファイルがそのままだとrootとなってしまうので、-u
でホストのUserIDとGroupIDを指定する。
$ docker run -it --rm -u`id -u`:`id -g` -v /opt/Xilinx:/opt/Xilinx -v /home/aster_ism:/home/aster_ism local/xilinx:2018.2
(container)$ source /opt/Xilinx/Vivado/2018.2/settings64.sh (container)$ vivado
なお、ライブラリが足りなかったら、rootで(-u
を使わず)コンテナを起動して、commitすれば大丈夫だと思います。
恐らく、ユーザがないのでコンテナ内のプロンプトは I have no name!@(container)
となるはず、なので、cd
してもホームディレクトリに移動できない