basic architecture detection

This commit is contained in:
paukstelis
2022-04-17 10:38:17 -04:00
parent ffca067051
commit fbe1ea9886
2 changed files with 46 additions and 14 deletions

View File

@@ -1,4 +1,4 @@
Updated February 2022. Updated April 2022.
Want to support this work? Buy Me a Coffee. https://www.buymeacoffee.com/ppaukstelis Want to support this work? Buy Me a Coffee. https://www.buymeacoffee.com/ppaukstelis
# octoprint_deploy # octoprint_deploy
These files provide a simple bash script for quickly deploying multiple octoprint instances on a single computer. These files provide a simple bash script for quickly deploying multiple octoprint instances on a single computer.
@@ -19,7 +19,7 @@ YouTube video for OctoPi setup here: https://www.youtube.com/watch?v=J5VzI4AFav4
* haproxy entries are updated so you can connect via http://octopi.local/instancename/ * haproxy entries are updated so you can connect via http://octopi.local/instancename/
* Ubuntu/Mint/Fedora (Fedora not completely tested) * Ubuntu/Mint/Fedora (Fedora not completely tested)
* Install Ubuntu 20-21.X, Mint 20.3+, or Fedora35+ on your system (make sure your user is admin for sudo) * Install Ubuntu 20-21.X, Mint 20.3+, or Fedora35+ on your system (make sure your user is admin for sudo)
* Install git if it isn't already: `sudo apt install git` * Install git if it isn't already: `sudo apt install git` or `sudo dnf install git`
* run the command `git clone https://github.com/paukstelis/octoprint_deploy.git` * run the command `git clone https://github.com/paukstelis/octoprint_deploy.git`
* run the command `sudo octoprint_deploy/octoprint_deploy.sh` * run the command `sudo octoprint_deploy/octoprint_deploy.sh`
* Choose `Prepare System` from the menu. This will install necessary packages, install octoprint, and start an instance * Choose `Prepare System` from the menu. This will install necessary packages, install octoprint, and start an instance
@@ -31,3 +31,6 @@ YouTube video for OctoPi setup here: https://www.youtube.com/watch?v=J5VzI4AFav4
* Remove instances * Remove instances
* Add USB webcams AFTER you've created the instance * Add USB webcams AFTER you've created the instance
* Test USB connections * Test USB connections
# Recent Changes
* Add duplicate serial number detection.
* Add architecture check to minimize errors where a system gets prepared as OctoPi when someone is using Ubuntu/Fedora/etc.

View File

@@ -6,7 +6,10 @@ if (( $EUID != 0 )); then
exit exit
fi fi
#Get abbreviated architecture
ARCH=$(arch)
ARCH=${ARCH:0:3}
echo $ARCH
# from stackoverflow.com/questions/3231804 # from stackoverflow.com/questions/3231804
prompt_confirm() { prompt_confirm() {
while true; do while true; do
@@ -37,7 +40,7 @@ new_instance () {
BUDEFAULT="/home/$user/OctoPrint/bin/octoprint" BUDEFAULT="/home/$user/OctoPrint/bin/octoprint"
OTHERDEFAULT="" OTHERDEFAULT=""
PS3='Installation type: ' PS3='Installation type: '
options=("OctoPi" "OctoBuntu" "Other" "Quit") options=("OctoPi" "Linux/OctoBuntu" "Other" "Quit")
select opt in "${options[@]}" select opt in "${options[@]}"
do do
case $opt in case $opt in
@@ -46,7 +49,7 @@ new_instance () {
INSTALL=1 INSTALL=1
break break
;; ;;
"OctoBuntu") "Linux/OctoBuntu")
DAEMONPATH=$BUDEFAULT DAEMONPATH=$BUDEFAULT
INSTALL=2 INSTALL=2
break break
@@ -349,6 +352,7 @@ add_camera() {
USBCAM=$TEMPUSBCAM USBCAM=$TEMPUSBCAM
else else
echo -e "Camera detected with serial number: \033[0;34m $CAM \033[0m" | log echo -e "Camera detected with serial number: \033[0;34m $CAM \033[0m" | log
check_sn "$CAM"
fi fi
echo "Camera Port (ENTER will increment last value in /etc/camera_ports):" echo "Camera Port (ENTER will increment last value in /etc/camera_ports):"
read CAMPORT read CAMPORT
@@ -446,6 +450,7 @@ usb_testing() {
fi fi
if [ -n "$UDEV" ]; then if [ -n "$UDEV" ]; then
echo "Serial Number detected: $UDEV" | log echo "Serial Number detected: $UDEV" | log
check_sn "$UDEV"
fi fi
done done
main_menu main_menu
@@ -487,6 +492,18 @@ prepare () {
*) echo "invalid option $REPLY";; *) echo "invalid option $REPLY";;
esac esac
done done
if [ $INSTALL -eq 1 ] && [[ "$ARCH" != arm ]]; then
echo "WARNING! You have selected OctoPi, but are not using an ARM processor."
echo "If you are using generic another linux distribution, select it from the list."
echo "Unless you really know what you are doing, select N."
if prompt_confirm "Continue with OctoPi? (Y/N)"; then
echo "OK!"
else
main_menu
fi
fi
if prompt_confirm "Ready to begin?" if prompt_confirm "Ready to begin?"
then then
echo 'instance:generic port:5000' > /etc/octoprint_instances echo 'instance:generic port:5000' > /etc/octoprint_instances
@@ -496,7 +513,6 @@ prepare () {
usermod -a -G dialout,video $user usermod -a -G dialout,video $user
if [ $INSTALL -eq 1 ]; then if [ $INSTALL -eq 1 ]; then
echo 'Disabling unneeded services....' echo 'Disabling unneeded services....'
systemctl disable octoprint.service systemctl disable octoprint.service
@@ -512,7 +528,9 @@ prepare () {
echo 'Modifying config.yaml' echo 'Modifying config.yaml'
cp -p $SCRIPTDIR/config.basic /home/pi/.octoprint/config.yaml cp -p $SCRIPTDIR/config.basic /home/pi/.octoprint/config.yaml
echo 'Connect to your octoprint instance and setup admin user' echo 'Connect to your octoprint instance and setup admin user'
fi fi
if [ $INSTALL -gt 1 ]; then if [ $INSTALL -gt 1 ]; then
echo "Creating OctoBuntu installation equivalent." echo "Creating OctoBuntu installation equivalent."
echo "Adding systemctl and reboot to sudo" echo "Adding systemctl and reboot to sudo"
@@ -567,12 +585,12 @@ prepare () {
sudo -u $user rm -rf mjpeg sudo -u $user rm -rf mjpeg
#Fedora has SELinux on by default so must make adjustments? Don't really know what these do... #Fedora has SELinux on by default so must make adjustments? Don't really know what these do...
if [ $INSTALL -eq 5 ]; then if [ $INSTALL -eq 5 ]; then
semanage fcontext -a -t bin_t "/home/$user/OctoPrint/bin/.*" semanage fcontext -a -t bin_t "/home/$user/OctoPrint/bin/.*"
chcon -Rv -u system_u -t bin_t "/home/$user/OctoPrint/bin/" chcon -Rv -u system_u -t bin_t "/home/$user/OctoPrint/bin/"
restorecon -R -v /home/$user/OctoPrint/bin restorecon -R -v /home/$user/OctoPrint/bin
semanage fcontext -a -t bin_t "/home/$user/mjpg-streamer/.*" semanage fcontext -a -t bin_t "/home/$user/mjpg-streamer/.*"
chcon -Rv -u system_u -t bin_t "/home/$user/mjpg-streamer/" chcon -Rv -u system_u -t bin_t "/home/$user/mjpg-streamer/"
restorecon -R -v /home/$user/mjpg-streamer restorecon -R -v /home/$user/mjpg-streamer
fi fi
echo 'Starting generic service on port 5000' echo 'Starting generic service on port 5000'
systemctl start octoprint_default.service systemctl start octoprint_default.service
@@ -582,6 +600,17 @@ prepare () {
fi fi
main_menu main_menu
} }
check_sn() {
if [ -f "/etc/udev/rules.d/99-octoprint.rules" ]; then
if grep -q $1 /etc/udev/rules.d/99-octoprint.rules; then
echo "An identical serial number has been detected in the udev rules. Please be warned, this will likely cause instability!" | log
else
echo "No duplicate serial number detected" | log
fi
fi
}
main_menu() { main_menu() {
#reset #reset
UDEV='' UDEV=''