diff --git a/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java b/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java index 22543c4bb..3268b7329 100644 --- a/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java +++ b/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java @@ -43,6 +43,7 @@ public class NetworkManager { public void initialize(boolean shouldManage) { isManaged = shouldManage && !networkingIsDisabled; if (!isManaged) { + logger.info("Network management is disabled."); return; } diff --git a/scripts/install.sh b/scripts/install.sh index c2634dbd0..4a5e0e377 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -4,6 +4,42 @@ package_is_installed(){ dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -q "ok installed" } +help() { + echo "This script installs Photonvision." + echo "It must be run as root." + echo + echo "Syntax: sudo ./install.sh [-h|m|n|q]" + echo " options:" + echo " -h Display this help message." + echo " -m Install and configure NetworkManager (Ubuntu only)." + echo " -n Disable networking. This will also prevent installation of NetworkManager." + echo " -q Silent install, automatically accepts all defaults. For non-interactive use." + echo +} + +INSTALL_NETWORK_MANAGER="false" + +while getopts ":hmnq" name; do + case "$name" in + h) + help + exit 0 + ;; + m) INSTALL_NETWORK_MANAGER="true" + ;; + n) DISABLE_NETWORKING="true" + ;; + q) QUIET="true" + ;; + \?) + echo "Error: Invalid option -- '$OPTARG'" + echo "Try './install.sh -h' for more information." + exit 1 + esac +done + +shift $(($OPTIND -1)) + if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 @@ -34,6 +70,16 @@ fi echo "This is the installation script for PhotonVision." echo "Installing for platform $ARCH_NAME" +DISTRO=$(lsb_release -is) +if [[ "$DISTRO" = "Ubuntu" && "$INSTALL_NETWORK_MANAGER" != "true" && -z "$QUIET" && -z "$DISABLE_NETWORKING" ]]; then + echo "" + echo "Photonvision uses NetworkManager to control networking on your device." + read -p "Do you want this script to install and configure NetworkManager? [y/N]: " response + if [[ $response == [yY] || $response == [yY][eE][sS] ]]; then + INSTALL_NETWORK_MANAGER="true" + fi +fi + echo "Installing curl..." apt-get install --yes curl echo "curl installation complete." @@ -53,6 +99,16 @@ else echo 'GOVERNOR=performance' > /etc/default/cpufrequtils fi +if [[ "$INSTALL_NETWORK_MANAGER" == "true" ]]; then + echo "Installing network-manager..." + apt-get install --yes network-manager + cat > /etc/netplan/00-default-nm-renderer.yaml <