Fix starter permissions for deployment

Change-Id: I6ec93304c6979051d7c561d5bf2bc98ca612d4bf
diff --git a/aos/starter/BUILD b/aos/starter/BUILD
index 52fd62a..8ad3dbf 100644
--- a/aos/starter/BUILD
+++ b/aos/starter/BUILD
@@ -5,7 +5,8 @@
     name = "starter",
     srcs = [
         "starter.sh",
-        "starter_exe",
+        "starterd",
+        "starter_cmd",
     ],
     visibility = ["//visibility:public"],
 )
diff --git a/aos/starter/starter.sh b/aos/starter/starter.sh
index e140351..72f69a4 100755
--- a/aos/starter/starter.sh
+++ b/aos/starter/starter.sh
@@ -16,5 +16,5 @@
 cd "${ROBOT_CODE}"
 export PATH="${PATH}:${ROBOT_CODE}"
 while true; do
-	starter_exe $ROBOT_CODE/start_list.txt 2>&1
+	starterd 2>&1
 done
diff --git a/aos/starter/starterd_lib.cc b/aos/starter/starterd_lib.cc
index 5c64201..1c32be3 100644
--- a/aos/starter/starterd_lib.cc
+++ b/aos/starter/starterd_lib.cc
@@ -84,7 +84,7 @@
   }
 
   if (user_) {
-    if (seteuid(*user_) == -1 || setfsuid(*user_) == -1) {
+    if (setuid(*user_) == -1) {
       write_pipe_.Write(
           static_cast<uint32_t>(aos::starter::LastStopReason::SET_USR_ERR));
       PLOG(FATAL) << "Could not set user for " << name_ << " to " << *user_;
@@ -476,6 +476,10 @@
 }
 
 void Starter::Run() {
+#ifdef AOS_ARCHITECTURE_arm_frc
+  PCHECK(setuid(0) == 0) << "Failed to change user to root";
+#endif
+
   for (auto &application : applications_) {
     application.second.Start();
   }
diff --git a/frc971/config/setup_roborio.sh b/frc971/config/setup_roborio.sh
index 9e502e6..f70d4fa 100755
--- a/frc971/config/setup_roborio.sh
+++ b/frc971/config/setup_roborio.sh
@@ -41,6 +41,8 @@
   exit 1
 fi
 
+ssh "admin@${ROBOT_HOSTNAME}" "sed -i 's/vm\.overcommit_memory=2/vm\.overcommit_memory=0/' /etc/sysctl.conf"
+
 ssh "admin@${ROBOT_HOSTNAME}" 'echo "net.core.wmem_max=1262560" >> /etc/sysctl.conf'
 ssh "admin@${ROBOT_HOSTNAME}" 'echo "net.core.rmem_max=1262560" >> /etc/sysctl.conf'
 
diff --git a/frc971/downloader/downloader.py b/frc971/downloader/downloader.py
index fa618fe..b3eb640 100644
--- a/frc971/downloader/downloader.py
+++ b/frc971/downloader/downloader.py
@@ -105,7 +105,7 @@
 
     if not recursive:
         subprocess.check_call((ssh_path, ssh_target, "&&".join([
-            "chmod u+s %s/starter_exe" % target_dir,
+            "chmod u+s %s/starterd" % target_dir,
             "echo \'Done moving new executables into place\'",
             "bash -c \'sync && sync && sync\'",
         ])))