系统要求
Windows 11 专业版 (推荐)
Windows 10 专业版
x64 系统:版本为 1903 及以上,构建版本为 18362.1049 及以上。
ARM64 系统:版本为 2004 及以上版本,Build 19041 及以后版本。
注意
Windows 10 上的 WSL 不支持 localhost 回环映射,需要自行处理端口映射,本教程未提供。
Windows 部分
按下 Win + X,打开 终端管理员(A)
启用 WSL & 虚拟机平台
1 2 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
完成后,重启计算机。
更新到 WSL2
下载适用于 x64 或 ARM64 的 WSL2 Linux 内核更新包,并安装。
将 WSL2 设置为默认版本。
1 wsl --set-default-version 2
安装 Ubuntu 子系统
根据 Apollo 10.0 文档,Ubuntu 系统推荐: 18.04 、20.04 、22.04 ,不推荐24.04
以 22.04 为例,下载得到 Ubuntu2204-221101.AppxBundle 文件,用 7-Zip 打开。
x64系统: Ubuntu_2204.1.7.0_x64.appx → install.tar.gz
ARM64系统: Ubuntu_2204.1.7.0_ARM64.appx → install.tar.gz
将 install.tar.gz 文件解压到任意目录 (例如 E:\WSL\install.tar.gz)
将 Ubuntu 22.04 导入到 WSL2 中。
1 wsl --import <Distro> <InstallLocation> <FileName>
1 wsl --import Ubuntu E:\WSL\Ubuntu E:\WSL\install.tar.gz
其中 Ubuntu 是自定义的发行版名称,若使用其他名称,需要在后续命令中替换。
E:\WSL\Ubuntu 是 Ubuntu 子系统的安装目录,请自行选择空间充足的目录。
为 WSL2 启用 Systemd
1 2 wsl -d Ubuntu -u root bash -c "echo -e '[boot]\nsystemd=true' > /etc/wsl.conf" wsl -d Ubuntu --shutdown
Ubuntu 部分
进入 Ubuntu 子系统
创建新用户
通过 wsl --import 安装的子系统默认只有 root 用户。
由于直接使用 root 运行 Apollo 可能会出现奇奇怪怪的问题,建议创建一个新用户。
此处我们在子系统中以 root 身份创建新用户,将其添加到 docker 组并配置免密码 sudo 权限,用户名以 apollo 为例,可按需修改。
1 2 3 4 5 6 7 adduser apollo usermod -aG sudo apollo usermod -aG docker apollo echo "apollo ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/apollo-nopasswdsu - apollo whoami sudo whoami
安装 Docker
添加 Docker 官方仓库密钥和列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc sudo tee /etc/apt/sources.list.d/docker.sources <<EOF Types: deb URIs: https://download.docker.com/linux/ubuntu Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") Components: stable Architectures: $(dpkg --print-architecture) Signed-By: /etc/apt/keyrings/docker.asc EOF sudo apt update
安装 Docker
1 sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装 NVIDIA 容器工具包
添加 NVIDIA 官方仓库密钥和列表
1 2 3 4 5 6 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \ sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt update
安装 NVIDIA 容器工具包
1 sudo apt install -y nvidia-container-toolkit
配置 NVIDIA 容器工具包
1 sudo nvidia-ctk runtime configure --runtime=docker
重启 Docker 服务
1 sudo service docker restart
快捷方式
以默认用户进入子系统终端
1 C:\Windows \System32 \wsl.exe -- su - $(id -nu 1000)
以 root 身份进入子系统并切换到 ~
1 C:\Windows \System32 \wsl.exe --cd ~
后续步骤
至此准备工作已经完成,请参考以下文档完成 Apollo 的安装:
附录
备注: 正式赛改用了 Apollo 9.0,可以直接使用 buildtool install planning* 安装所有planning包,以下内容仅作归档。
因为 Apollo 10.0 索引的 bug,buildtool install planning* 不可用,此处附上安装所有planning包的命令:
1 buildtool install planning planning-lane-follow-map planning-scenario-bare-intersection-unprotected planning-scenario-emergency-pull-over planning-scenario-emergency-stop planning-scenario-lane-follow planning-scenario-park-and-go planning-scenario-pull-over planning-scenario-stop-sign-unprotected planning-scenario-traffic-light-protected planning-scenario-traffic-light-unprotected-left-turn planning-scenario-traffic-light-unprotected-right-turn planning-scenario-valet-parking planning-scenario-yield-sign planning-task-fallback-path planning-task-fast-stop-trajectory-fallback planning-task-lane-borrow-path planning-task-lane-change-path planning-task-lane-follow-path planning-task-open-space-fallback-decider planning-task-open-space-pre-stop-decider planning-task-open-space-roi-decider planning-task-open-space-trajectory-partition planning-task-open-space-trajectory-provider planning-task-path-decider planning-task-path-reference-decider planning-task-path-time-heuristic planning-task-piecewise-jerk-speed planning-task-piecewise-jerk-speed-nonlinear planning-task-pull-over-path planning-task-reuse-path planning-task-rss-decider planning-task-rule-based-stop-decider planning-task-speed-bounds-decider planning-task-speed-decider planning-task-st-bounds-decider planning-traffic-rules-backside-vehicle planning-traffic-rules-crosswalk planning-traffic-rules-destination planning-traffic-rules-keepclear planning-traffic-rules-reference-line-end planning-traffic-rules-rerouting planning-traffic-rules-stop-sign planning-traffic-rules-traffic-light planning-traffic-rules-yield-sign