File size: 2,263 Bytes
6fa1956
 
 
 
 
 
 
 
 
 
 
f69c0bb
 
 
 
 
 
 
 
6fa1956
 
 
f69c0bb
 
6fa1956
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="${ROOT_DIR:-/workspace}"
PROJECT_DIR="${ROOT_DIR}/reveal_vla_bimanual"
SHIM_ROOT="${ROOT_DIR}/system_shims"

export DEBIAN_FRONTEND=noninteractive

apt-get update
apt-get install -y \
  libxcb-cursor0 \
  libxcb-icccm4 \
  libxcb-image0 \
  libxcb-keysyms1 \
  libxcb-randr0 \
  libxcb-render-util0 \
  libxcb-xinerama0 \
  libxrender1 \
  libxkbcommon0 \
  libxkbcommon-x11-0 \
  mesa-utils \
  xvfb \
  x11-utils \
  x11-xserver-utils \
  xauth \
  xserver-xorg \
  xserver-xorg-core || true

if ! command -v nvidia-xconfig >/dev/null 2>&1; then
  apt-get install -y nvidia-xconfig || true
fi

mkdir -p /etc/X11/xorg.conf.d

if command -v nvidia-xconfig >/dev/null 2>&1; then
  nvidia-xconfig -a --use-display-device=None --virtual=1280x1024 || \
    nvidia-xconfig -a --virtual=1280x1024
fi

cat > /etc/X11/xorg.conf.d/99-maxclients.conf <<'EOF'
Section "ServerFlags"
    Option "MaxClients" "2048"
EndSection
EOF

cat > /etc/X11/Xwrapper.config <<'EOF'
allowed_users=anybody
needs_root_rights=yes
EOF

DRIVER_VERSION="$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1)"
DRIVER_BRANCH="${DRIVER_VERSION%%.*}"
SHIM_DIR="${SHIM_ROOT}/nvidia${DRIVER_BRANCH}"

mkdir -p "${SHIM_DIR}"

XORG_DEB="$(apt-cache madison "xserver-xorg-video-nvidia-${DRIVER_BRANCH}" | awk -v v="${DRIVER_VERSION}" '$3 ~ v { print $3; exit }')"
GL_DEB="$(apt-cache madison "libnvidia-gl-${DRIVER_BRANCH}" | awk -v v="${DRIVER_VERSION}" '$3 ~ v { print $3; exit }')"

if [[ -z "${XORG_DEB}" || -z "${GL_DEB}" ]]; then
  echo "unable to resolve NVIDIA packages for driver ${DRIVER_VERSION}" >&2
  exit 1
fi

pushd "${ROOT_DIR}" >/dev/null
apt-get download \
  "xserver-xorg-video-nvidia-${DRIVER_BRANCH}=${XORG_DEB}" \
  "libnvidia-gl-${DRIVER_BRANCH}=${GL_DEB}"
dpkg-deb -x "xserver-xorg-video-nvidia-${DRIVER_BRANCH}_${XORG_DEB}_amd64.deb" "${SHIM_DIR}"
dpkg-deb -x "libnvidia-gl-${DRIVER_BRANCH}_${GL_DEB}_amd64.deb" "${SHIM_DIR}"
popd >/dev/null

cat <<'EOF'
Headless X prerequisites are installed.

Start GPU-backed X for RLBench with:
  /workspace/reveal_vla_bimanual/scripts/start_rlbench_x.sh

Then verify:
  DISPLAY=:99 glxinfo -B

The workspace-local NVIDIA Xorg shim is under:
  /workspace/system_shims
EOF