balena-io-examples / nvidia-x86

Example of using CUDA on an Nvidia GPU in an x86 device.
2 stars 4 forks source link

Questions during setup in Docker build freeze the procedure #1

Open mfoglio opened 2 years ago

mfoglio commented 2 years ago

Issue

I am following the setup steps here gpu/Dockerfile . During the Docker build the setup asks several questions, therefore blocking the build.

How to reproduce the issue

Start a shell in the base image: docker run -it nvcr.io/nvidia/deepstream:6.0-triton

Run the following commands:

export DEBIAN_FRONTEND noninteractive

# Set some variables to download the proper header modules
export VERSION="2.83.18%2Brev1.dev"
export BALENA_MACHINE_NAME="genericx86-64-ext"

# Set variables for the Yocto version of the OS
export YOCTO_VERSION=5.10.43
export YOCTO_KERNEL=${YOCTO_VERSION}-yocto-standard

# Set variables to download proper NVIDIA driver
export NVIDIA_DRIVER_VERSION=470.86
export NVIDIA_DRIVER=NVIDIA-Linux-x86_64-${NVIDIA_DRIVER_VERSION}

# Install some prereqs
apt install -y git wget unzip build-essential libelf-dev bc libssl-dev bison flex software-properties-common

mkdir -p /usr/src/kernel_source
cd /usr/src/kernel_source

# Causes a pipeline to produce a failure return code if any command errors.
# Normally, pipelines only return a failure if the last command errors.
#SHELL ["/bin/bash", "-o", "pipefail", "-c"]

# Download the kernel source then prepare kernel source to build a module.
curl -fsSL "https://files.balena-cloud.com/images/${BALENA_MACHINE_NAME}/${VERSION}/kernel_source.tar.gz" \
    | tar xz --strip-components=2 && \
    make -C build modules_prepare -j"$(nproc)"

The last command will have the following output, and then it will freeze waiting for user input:

make: Entering directory '/usr/src/kernel_source/build'
  SYNC    include/config/auto.conf.cmd
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  LEX     scripts/kconfig/lexer.lex.c
  HOSTCC  scripts/kconfig/expr.o
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTLD  scripts/kconfig/conf
*
* Restart config...
*
*
* BPF based packet filtering framework (BPFILTER)
*
BPF based packet filtering framework (BPFILTER) (BPFILTER) [Y/n/?] y
  bpfilter kernel module with user mode helper (BPFILTER_UMH) [M/n/y/?] (NEW) 

It seems that export DEBIAN_FRONTEND=noninteractive is not doing the job.

Looking at make options there doesn't seem to be an option to skip the question, but I guess I am wrong. How can I fix this?

alanb128 commented 2 years ago

@mfoglio the gpu/Dockerfile is meant to run in its own container alongside an image such as nvcr.io/nvidia/deepstream:6.0-triton. So I would try getting the gpu container running first (you need to set some variables as mentioned in the readme) and then follow the format of the nvidia-x86 example but using the deepstream image.