commit 498cfd4c3948a2fa5ce2df10389408e0bfaaa666 Author: Bradlee Speice Date: Thu Sep 19 20:49:00 2024 -0400 Initial install script diff --git a/install_openonload.sh b/install_openonload.sh new file mode 100755 index 0000000..5984dab --- /dev/null +++ b/install_openonload.sh @@ -0,0 +1,73 @@ +#!/bin/bash +set -eu + +debsrc_url="https://www.xilinx.com/content/dam/xilinx/publications/solarflare/onload/openonload/8-1-3-40/SF-122451-LS-14-OpenOnload-DEB-Release-Package.zip" +debsrc_folder="onload-8.1.3.40" +build_packages=( + "debhelper" + "devscripts" + "gawk" + "libcap-dev" + "libpcap-dev" + "python3-dev" +) +build_folder="$(mktemp -d)" +build_log="$build_folder/log" + +function log() { + echo "-- $*" +} + +function cmd() { + cmd_redirect="$* 1>> \"$build_log\" 2>&1" + log "Running: $*" + eval "$cmd_redirect" + return $? +} + +log "Installing in $build_folder; logs available at $build_log" +log + +log "Installing build packages:" +cmd sudo apt install -y "${build_packages[@]}" +log + +debsrc_filename="/tmp/$(basename $debsrc_url)" +log "Retrieving OpenOnload sources:" +cmd wget -NP /tmp "$debsrc_url" +log + +log "Unpacking OpenOnload sources:" +cmd pushd "$build_folder" && \ + cmd busybox unzip "$debsrc_filename" && \ + cmd tar xf ./*.tgz && \ + cmd dpkg-source -x ./*.dsc +log + +log "Building OpenOnload:" +cmd pushd "$build_folder/$debsrc_folder" && \ + cmd debuild -i -uc -us +log + +install_debs=("$build_folder"/*.deb) +log "Installing OpenOnload packages:" +cmd sudo apt install -y "${install_debs[@]}" +log + +log "Building OpenOnload kernel modules:" +cmd sudo module-assistant --non-inter auto-install onload && \ + # Not mentioned in the documentation, but: + # OpenOnload installs a module named sfc.ko, which clashes with + # the sfc.ko provided by the OS installation. + # To deal with this, a depmod file is also installed, which should + # instruct the OS to load OpenOnload's version. + # However, unless depmod is re-run after installation, OpenOnload will fail + # to load, citing "symbol not found" errors. + sudo depmod +log + +log "Loading OpenOnload kernel modules:" +cmd sudo onload_tool reload +log + +log "Installation complete."