# 使用 Docker 安装并运行 Vivado 开发套件

本文档旨在记录如何通过 Docker 来安装和运行 Xilinx Vivado 开发套件,以实现开发环境的隔离与快速部署。

# 1. 修复语言环境问题的 Dockerfile

基础镜像 gusanagy/xilinx-vivado:2024.1-x11 存在语言环境(locale)配置问题,可能导致部分 GUI 工具无法正常启动。通过以下 Dockerfile 可以修复此问题。

FROM gusanagy/xilinx-vivado:2024.1-x11

# 切换到 root 用户以获得安装权限
USER root

# 修复命令,来安装并生成语言环境
RUN apt-get update && \
    apt-get install -y locales && \
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales

# 将修复好的语言环境设置为系统默认
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# 切换回镜像默认的非 root 用户
USER vivadouser

# 2. 配置 docker-compose.yml

为了简化容器的启动和管理,我们使用 docker-compose.yml 文件来定义服务。该配置包含了 GUI 转发、工作目录挂载以及可选的硬件设备映射。

services:
  vivado:
    build: .
    image: vivado-fixed:2024.1
    container_name: vivado
    
    stdin_open: true
    tty: true

    environment:
      - DISPLAY=${DISPLAY}
      # - XAUTHORITY=${XAUTHORITY}
    
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
      # - ~/.Xauthority:/home/vivadouser/.Xauthority:ro
      - .:/home/vivadouser/workspace

    working_dir: /home/vivadouser/workspace

    # (可选) 挂载JTAG等硬件设备
    # devices:
    #   - "/dev/xilinx_jtag:/dev/xilinx_jtag"

# 3. 构建镜像并启动容器

将上述两个文件放置在同一目录下,然后执行以下命令来构建镜像并以守护进程模式(-d)启动容器。

docker compose up -d

对于旧版本的 Docker,可能需要使用 docker-compose

docker-compose up -d

# 4. 启动 Vivado 图形化界面

容器成功运行后,按照以下步骤进入容器并启动 Vivado。

# 4.1 进入容器内部

执行 docker exec 命令进入容器的交互式终端。推荐使用 -u vivadouser 参数以非 root 用户身份登录,以避免潜在的权限问题。

docker exec -it -u vivadouser vivado bash

# 4.2 初始化环境变量

在容器的 shell 中,首先需要 source Vivado 的设置脚本来配置必要的环境变量。

source /home/vivadouser/Vivado/2024.1/settings64.sh

# 4.3 启动图形化界面

最后,执行 vivado 命令启动 Vivado 的图形化界面。使用 & 将其置于后台运行,以免阻塞当前终端。

vivado&

# 5. 注意事项

  • 镜像体积:基础镜像 gusanagy/xilinx-vivado 体积接近 25GB,请确保本地磁盘空间充足且网络条件良好,以便顺利拉取。
  • X11 转发:在 Linux 主机上,docker-compose.yml 中的 DISPLAY/tmp/.X11-unix 挂载通常足以实现 GUI 转发。在 macOS 或 Windows (WSLg) 上,可能需要额外的 X Server 配置。