CentOS
FPGA
Vivado

Vivado 2017.1のCentOS7への導入ログ

NOTE : 現在最新版は2017.4です。(2018年3月15日)

環境

Operating System:
- Linux localhost.localdomain 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- CERN CentOS Linux release 7.4.1708 (Core)

Hardware:
- Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
- ASRock Z270 Pro4 LGA 1151 Intel Z270 HDMI SATA 6Gb/s USB 3.0 ATX Motherboards - Intel

手順

  1. 公式 からバイナリでインストーラーをダウンロードする。

  2. ダウンロードしてきたファイルを展開。実行ファイルに実行権限を付与する。そして管理者権限で実行する。

    $ sudo chmod +x Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
    $ sudo ./Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
    

    NOTE : インストール時にUser Authenticationでコケそうになったが、タイムゾーンを合わせる(ヨーロッパ中央時間で設定していたがJSTに変更)と解決した。よくわからないが、ライセンスの問題だと思われる。 (https://forums.xilinx.com/t5/Installation-and-Licensing/Vivado-HLx-2015-4-Installation-User-Authentication-Loop/td-p/676758)

    NOTE : Vivado License Managerでライセンスファイル(Xilinx.lic)を読み込もうとすると次のようなエラーメッセージが出た。

    We have identified the value of your HostID is invalid (HostID=“000000000000”).
    For more configuration information, search Xilinx Answer Records for: HOSTID 000000000000
    

    原因は、ライセンスはNICのホストIDで紐つけている場合、そしてCentOS7の場合、デフォルトのNIC名がeth0, eth1, …ではなくて、enp~という名前になるため、イーサネットのポートネームを解決できないことらしい。(https://japan.xilinx.com/support/answers/60510.html)

    以下のような手順を踏んで、ポートネームを変更した。


    1. grubの設定変更

      # grep net.ifnames /etc/default/grub || sed '/^GRUB_CMDLINE_LINUX/s/\"$/ net.ifnames=0  biosdevname=0\"/g' /etc/default/grub
      GRUB_TIMEOUT=5
      GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
      GRUB_DEFAULT=saved
      GRUB_DISABLE_SUBMENU=true
      GRUB_TERMINAL_OUTPUT="console"
      GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap rd.lvm.lv=centos/root crashkernel=auto rhgb quiet net.ifnames=0 biosdevname=0"
      GRUB_DISABLE_RECOVERY=“true
      # sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      
    2. udevの設定削除

      # rm /etc/udev/rules.d/70-persistent-ipoib.rules
      
    3. 既存のファイルのリネーム

      # mv /etc/sysconfig/network-scripts/ifcfg-enp... /etc/sysconfig/network-scripts/ifcfg-eth0
      
    4. 以下のファイルを開いて、DEVICE, NAMEの部分を’eth0’に変更する。HWADDR=“[MACアドレス]”も追加する。

      # sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
      
    5. システムの再起動を行う。

      # shutdown -r now
      
    6. 最後にifconfigで確認する。

      $ ifconfig
      

  3. Vivadoのセットアップ

    ターミナルでvivadoと打てば起動できるようにするため、.bashrc等に次のようにシェルスクリプトへのパスを追記しておく。インストールしたディレクトリが異なる場合はそれに合わせて設定する。ちなみに、インストール後、/opt/以下以外にディレクトリを移動した場合はシェルスクリプトの中身のパスの変更が必要。

    source /opt/Xilinx/Vivado/2017.1/settings64.sh
    source /opt/Xilinx/SDK/2017.1/settings64.sh
    
  4. Cable Driversのインストール

    Windowsではケーブルドライバーのインストールはインストーラーのオプションでで行うことができるが、Linuxの場合はroot権限が必要なので手動でインストールする必要がある。
    インストールには次のスクリプトを実行する。

    sudo /opt/Xilinx/Vivado/2017.1//data/xicom/cable_drivers/lin64/install_script/install_drivers
    

その他

  • DMA for PCI Express (PCIe) Subsystemのドライバーのインストール

    1. AR# 65444 ザイリンクス PCI Express DMA ドライバーおよびソフトウェア ガイドからXilinx_Answer_65444_Linux_Files.zipをダウンロードして展開する。
    2. ルール・ファイルを/etc/udev/以下にコピーする。

      # cp etc/udev/rules.d/60-xdma.rules /etc/udev/rules.d/60-xdma.rules
      # cp etc/udev/rules.d/xdma-udev-command.sh /etc/udev/rules.d/xdma-udev-command.sh
      
    3. ドライバをロードするシェルスクリプトを実行する。...なんかダメでした。

      # cd ../test/
      # sh ./load_driver.sh
      Loading driver…ins mod: ERROR: could not insert module ../driver/xdma.ko: Required key not available
      Error: Kernel module did not load properly.
      FAILED
      
    4. 原因はSecure Bootが有効になっていたからのようです。詳しくはここを参照する。
      私の環境では、F2キーを押しながらASRockのマザーボードのBIOS画面を開き、“Advanced Mode(F6)”→"Security”→”Secure Boot State”を”Enable”から”Disabled”に変更して再起動してインストールを完了しました。ASUSやMSIのマザーボードでも同様にセキュアブートを無効にすればインストールできるようになるかと思います。

参考