mirror of
https://github.com/flatcar/scripts.git
synced 2026-03-02 03:52:52 +01:00
coreos-overlay: removed the nvidia-drivers
This package was used to create nvidia drivers sysext, which downloaded, compiled and installed the drivers on the fly. We are replacing it with native precompiled drivers.
This commit is contained in:
parent
c6fcea1b1a
commit
4d1bacb701
@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /usr/share/coreos/release
|
||||
NVIDIA_DRIVER_BASENAME="$1"
|
||||
KERNEL_NAME="$(ls /lib/modules)"
|
||||
|
||||
cd "/nvidia/${NVIDIA_DRIVER_BASENAME}"
|
||||
./nvidia-installer -s -n \
|
||||
--no-check-for-alternate-installs \
|
||||
--no-kernel-module-source \
|
||||
--kernel-name="${KERNEL_NAME}" \
|
||||
--no-opengl-files \
|
||||
--no-distro-scripts \
|
||||
--no-systemd \
|
||||
--skip-depmod \
|
||||
--kernel-install-path="${PWD}/install-mod" \
|
||||
--log-file-name="${PWD}/nvidia-installer.log" || true
|
||||
|
||||
mkdir -p /lib/modules/${KERNEL_NAME}/video
|
||||
mkdir -p "${PWD}"/install-mod
|
||||
cp "${PWD}"/kernel/*.ko "${PWD}"/install-mod
|
||||
cp "${PWD}"/install-mod/*.ko /lib/modules/${KERNEL_NAME}/video/
|
||||
depmod -a
|
||||
cp /lib/modules/${KERNEL_NAME}/modules.* "${PWD}/install-mod/"
|
||||
@ -1,185 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
. /usr/share/flatcar/release
|
||||
. /usr/share/flatcar/update.conf
|
||||
. /usr/share/flatcar/nvidia-metadata
|
||||
[ -f /etc/flatcar/nvidia-metadata ] && . /etc/flatcar/nvidia-metadata
|
||||
|
||||
NVIDIA_DOWNLOAD_BASEURL="https://us.download.nvidia.com/${NVIDIA_PRODUCT_TYPE}/"
|
||||
NVIDIA_DRIVER_BASENAME="NVIDIA-Linux-x86_64-${NVIDIA_DRIVER_VERSION}"
|
||||
NVIDIA_WORKDIR='nvidia-workdir'
|
||||
|
||||
FLATCAR_DEVELOPER_CONTAINER="flatcar_developer_container-${FLATCAR_RELEASE_VERSION}.bin"
|
||||
FLATCAR_DEVELOPER_CONTAINER_URL=""
|
||||
FLATCAR_ROOT_WORKDIR="/opt/nvidia/workdir"
|
||||
FLATCAR_KERNEL_VERSION=$(uname -r)
|
||||
NVIDIA_FLATCAR_VERSION_PAIR="${NVIDIA_DRIVER_VERSION}/${FLATCAR_KERNEL_VERSION}"
|
||||
NVIDIA_CURRENT_INSTALLATION="current"
|
||||
|
||||
function download_flatcar_developer_container() {
|
||||
echo Downloading Flatcar Container Linux Developer Container for version: "${FLATCAR_RELEASE_VERSION}"
|
||||
|
||||
if [[ ! -f "${FLATCAR_ROOT_WORKDIR}/${FLATCAR_DEVELOPER_CONTAINER}" ]]
|
||||
then
|
||||
rm -f "${FLATCAR_ROOT_WORKDIR}/"flatcar_developer_container*.bin
|
||||
FLATCAR_REMOTE_FILENAME=${FLATCAR_DEVELOPER_CONTAINER%%-*}.bin.bz2
|
||||
if [[ "$(curl -I --retry-delay 1 --retry 60 --retry-connrefused --retry-max-time 60 --connect-timeout 20 -L -s -o /dev/null -w "%{http_code}" "https://${GROUP}.release.flatcar-linux.net/${FLATCAR_RELEASE_BOARD}/${FLATCAR_RELEASE_VERSION}/${FLATCAR_REMOTE_FILENAME}")" == 200 ]]
|
||||
then
|
||||
FLATCAR_DEVELOPER_CONTAINER_URL="https://${GROUP}.release.flatcar-linux.net/${FLATCAR_RELEASE_BOARD}/${FLATCAR_RELEASE_VERSION}/${FLATCAR_REMOTE_FILENAME}"
|
||||
else
|
||||
FLATCAR_RELEASE_BOARD=${FLATCAR_RELEASE_BOARD//-usr/}
|
||||
FLATCAR_DEVELOPER_CONTAINER_URL="https://bincache.flatcar-linux.net/images/${FLATCAR_RELEASE_BOARD}/${FLATCAR_RELEASE_VERSION}/${FLATCAR_REMOTE_FILENAME}"
|
||||
fi
|
||||
|
||||
if [ ! -n "${FLATCAR_DEVELOPER_CONTAINER_URL}" ]
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
|
||||
curl -L --fail "${FLATCAR_DEVELOPER_CONTAINER_URL}" -o "${FLATCAR_ROOT_WORKDIR}/${FLATCAR_DEVELOPER_CONTAINER}.bz2"
|
||||
lbzip2 -d "${FLATCAR_ROOT_WORKDIR}/${FLATCAR_DEVELOPER_CONTAINER}.bz2"
|
||||
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function download_nvidia_driver_archive() {
|
||||
echo Downloading NVIDIA "${NVIDIA_DRIVER_VERSION}" Driver
|
||||
|
||||
if [ ! -f "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}/${NVIDIA_DRIVER_BASENAME}.run" ]
|
||||
then
|
||||
curl --retry-delay 1 --retry 60 --retry-connrefused --retry-max-time 60 --connect-timeout 20 --fail "${NVIDIA_DOWNLOAD_BASEURL}/${NVIDIA_DRIVER_VERSION}/${NVIDIA_DRIVER_BASENAME}.run" -o "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}/${NVIDIA_DRIVER_BASENAME}.run.tmp"
|
||||
mv "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}/${NVIDIA_DRIVER_BASENAME}.run.tmp" "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}/${NVIDIA_DRIVER_BASENAME}.run"
|
||||
fi
|
||||
}
|
||||
|
||||
function extract_nvidia_installer() {
|
||||
echo Extract the NVIDIA Driver Installer ${NVIDIA_DRIVER_VERSION}
|
||||
|
||||
pushd "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}"
|
||||
chmod +x "${NVIDIA_DRIVER_BASENAME}.run"
|
||||
"./${NVIDIA_DRIVER_BASENAME}.run" -x -s || true
|
||||
popd
|
||||
}
|
||||
|
||||
function run_nspawn_container() {
|
||||
echo Spawn system-nspawn container to install the NVIDIA drivers
|
||||
|
||||
sudo systemd-nspawn --read-only --volatile=overlay --image="${FLATCAR_ROOT_WORKDIR}/${FLATCAR_DEVELOPER_CONTAINER}" --bind="${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}":/nvidia --bind=/usr/lib/nvidia/bin:/app/bin/ /app/bin/install-nvidia "$NVIDIA_DRIVER_BASENAME"
|
||||
}
|
||||
|
||||
function copy_nvidia_build_artifacts() {
|
||||
mkdir -p "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib64"
|
||||
cp "$FLATCAR_ROOT_WORKDIR/$NVIDIA_WORKDIR/${NVIDIA_DRIVER_BASENAME}"/*.so.* "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib64/"
|
||||
|
||||
mkdir -p /opt/bin
|
||||
cp "$FLATCAR_ROOT_WORKDIR/$NVIDIA_WORKDIR/${NVIDIA_DRIVER_BASENAME}"/{nvidia-debugdump,nvidia-cuda-mps-control,nvidia-xconfig,nvidia-modprobe,nvidia-smi,nvidia-cuda-mps-server,nvidia-persistenced,nvidia-settings} /opt/bin/
|
||||
|
||||
mkdir -p "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib/modules/$(uname -r)/video/"
|
||||
cp "$FLATCAR_ROOT_WORKDIR/$NVIDIA_WORKDIR/${NVIDIA_DRIVER_BASENAME}"/install-mod/*.ko "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib/modules/$(uname -r)/video/"
|
||||
cp "$FLATCAR_ROOT_WORKDIR/$NVIDIA_WORKDIR/${NVIDIA_DRIVER_BASENAME}"/install-mod/modules.* "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib/modules/$(uname -r)/"
|
||||
|
||||
mkdir -p "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib/extension-release.d/"
|
||||
cat <<EOF >"/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}/usr/lib/extension-release.d/extension-release.nvidia-driver"
|
||||
ID=flatcar
|
||||
SYSEXT_LEVEL=1.0
|
||||
EOF
|
||||
|
||||
pushd /opt/nvidia
|
||||
ln -sfn "${NVIDIA_FLATCAR_VERSION_PAIR}" current
|
||||
popd
|
||||
}
|
||||
|
||||
function install_and_load() {
|
||||
# This creates symlinks to sonames
|
||||
mkdir -p /etc/ld.so.conf.d/
|
||||
echo "/opt/nvidia/${NVIDIA_CURRENT_INSTALLATION}/usr/lib64" > /etc/ld.so.conf.d/nvidia.conf
|
||||
ldconfig
|
||||
|
||||
modprobe -a i2c_core ipmi_msghandler ipmi_devintf
|
||||
|
||||
pushd "/opt/nvidia/${NVIDIA_CURRENT_INSTALLATION}/usr/lib/modules/$(uname -r)/video/"
|
||||
insmod nvidia.ko
|
||||
insmod nvidia-modeset.ko
|
||||
insmod nvidia-uvm.ko
|
||||
popd
|
||||
|
||||
# based on https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#runfile-verifications
|
||||
if [ ! -c /dev/nvidiactl ]
|
||||
then
|
||||
mknod -m 666 /dev/nvidiactl c 195 255
|
||||
fi
|
||||
|
||||
if [ ! -c /dev/nvidia0 ]
|
||||
then
|
||||
NVDEVS=`lspci | grep -i NVIDIA`
|
||||
N3D=`echo "$NVDEVS" | grep -c "3D controller" || true`
|
||||
NVGA=`echo "$NVDEVS" | grep -c "VGA compatible controller" || true`
|
||||
N=$(( $N3D + $NVGA - 1))
|
||||
for i in `seq 0 $N`; do
|
||||
mknod -m 666 /dev/nvidia$i c 195 $i
|
||||
done
|
||||
fi
|
||||
|
||||
if [ ! -c /dev/nvidia-uvm ]
|
||||
then
|
||||
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
|
||||
mknod -m 666 /dev/nvidia-uvm c $D 0
|
||||
fi
|
||||
}
|
||||
|
||||
function verify_installation() {
|
||||
nvidia-smi
|
||||
nvidia-modprobe -u -m -c 0 || echo "nvidia-modprobe failed!"
|
||||
}
|
||||
|
||||
function is_nvidia_probe_required() {
|
||||
# Vendor: NVIDIA, Class: VGA compatible controller
|
||||
if [[ -n "$(lspci -d 10de:*:0300)" ]]; then
|
||||
return 0
|
||||
fi
|
||||
# Vendor: NVIDIA, Class: 3D controller
|
||||
if [[ -n "$(lspci -d 10de:*:0302)" ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
function is_nvidia_installation_required() {
|
||||
if ! is_nvidia_probe_required; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ -d "/opt/nvidia/${NVIDIA_FLATCAR_VERSION_PAIR}" ]]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function presetup() {
|
||||
mkdir -p "${FLATCAR_ROOT_WORKDIR}"
|
||||
mkdir -p "${FLATCAR_ROOT_WORKDIR}/${NVIDIA_WORKDIR}"
|
||||
}
|
||||
|
||||
function setup() {
|
||||
download_flatcar_developer_container
|
||||
download_nvidia_driver_archive
|
||||
extract_nvidia_installer
|
||||
run_nspawn_container
|
||||
copy_nvidia_build_artifacts
|
||||
install_and_load
|
||||
verify_installation
|
||||
}
|
||||
|
||||
if is_nvidia_installation_required
|
||||
then
|
||||
presetup "$@"
|
||||
setup "$@"
|
||||
exit 0
|
||||
fi
|
||||
if is_nvidia_probe_required
|
||||
then
|
||||
install_and_load
|
||||
verify_installation
|
||||
fi
|
||||
@ -1,2 +0,0 @@
|
||||
NVIDIA_DRIVER_VERSION=535.216.01
|
||||
NVIDIA_PRODUCT_TYPE=tesla
|
||||
@ -1,15 +0,0 @@
|
||||
[Unit]
|
||||
Description=NVIDIA Configure Service
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
Before=containerd.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=true
|
||||
Restart=no
|
||||
Environment=PATH=/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
|
||||
ExecStart=/usr/lib/nvidia/bin/setup-nvidia
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -1,28 +0,0 @@
|
||||
# Copyright (c) 2020 Kinvolk GmbH. All rights reserved.
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit systemd
|
||||
|
||||
DESCRIPTION="NVIDIA drivers"
|
||||
HOMEPAGE=""
|
||||
SRC_URI=""
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 arm64"
|
||||
IUSE=""
|
||||
|
||||
# no source directory
|
||||
S="${WORKDIR}"
|
||||
|
||||
src_install() {
|
||||
systemd_dounit "${FILESDIR}/units/nvidia.service"
|
||||
systemd_enable_service multi-user.target nvidia.service
|
||||
exeinto "/usr/lib/nvidia/bin"
|
||||
doexe "${FILESDIR}/bin/install-nvidia"
|
||||
doexe "${FILESDIR}/bin/setup-nvidia"
|
||||
insinto "/usr/share/flatcar"
|
||||
doins "${FILESDIR}/nvidia-metadata"
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user