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
# octoprint_deploy
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/
* 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 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 `sudo octoprint_deploy/octoprint_deploy.sh`
* 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
* Add USB webcams AFTER you've created the instance
* 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
fi
#Get abbreviated architecture
ARCH=$(arch)
ARCH=${ARCH:0:3}
echo $ARCH
# from stackoverflow.com/questions/3231804
prompt_confirm() {
while true; do
@@ -37,7 +40,7 @@ new_instance () {
BUDEFAULT="/home/$user/OctoPrint/bin/octoprint"
OTHERDEFAULT=""
PS3='Installation type: '
options=("OctoPi" "OctoBuntu" "Other" "Quit")
options=("OctoPi" "Linux/OctoBuntu" "Other" "Quit")
select opt in "${options[@]}"
do
case $opt in
@@ -46,7 +49,7 @@ new_instance () {
INSTALL=1
break
;;
"OctoBuntu")
"Linux/OctoBuntu")
DAEMONPATH=$BUDEFAULT
INSTALL=2
break
@@ -349,6 +352,7 @@ add_camera() {
USBCAM=$TEMPUSBCAM
else
echo -e "Camera detected with serial number: \033[0;34m $CAM \033[0m" | log
check_sn "$CAM"
fi
echo "Camera Port (ENTER will increment last value in /etc/camera_ports):"
read CAMPORT
@@ -446,6 +450,7 @@ usb_testing() {
fi
if [ -n "$UDEV" ]; then
echo "Serial Number detected: $UDEV" | log
check_sn "$UDEV"
fi
done
main_menu
@@ -487,6 +492,18 @@ prepare () {
*) echo "invalid option $REPLY";;
esac
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?"
then
echo 'instance:generic port:5000' > /etc/octoprint_instances
@@ -496,7 +513,6 @@ prepare () {
usermod -a -G dialout,video $user
if [ $INSTALL -eq 1 ]; then
echo 'Disabling unneeded services....'
systemctl disable octoprint.service
@@ -512,7 +528,9 @@ prepare () {
echo 'Modifying config.yaml'
cp -p $SCRIPTDIR/config.basic /home/pi/.octoprint/config.yaml
echo 'Connect to your octoprint instance and setup admin user'
fi
if [ $INSTALL -gt 1 ]; then
echo "Creating OctoBuntu installation equivalent."
echo "Adding systemctl and reboot to sudo"
@@ -538,7 +556,7 @@ prepare () {
if [ $INSTALL -eq 5 ]; then
dnf -y install python3-devel cmake libjpeg-turbo-devel
fi
echo "Installing OctoPrint in /home/$user/OctoPrint"
#make venv
sudo -u $user python3 -m venv /home/$user/OctoPrint
@@ -557,7 +575,7 @@ prepare () {
echo 'Updating config.yaml'
sudo -u $user mkdir /home/$user/.octoprint
sudo -u $user cp -p $SCRIPTDIR/config.basic /home/$user/.octoprint/config.yaml
#install mjpg-streamer, not doing any error checking or anything
echo 'Installing mjpeg-streamer'
sudo -u $user git clone https://github.com/jacksonliam/mjpg-streamer.git mjpeg
@@ -567,12 +585,12 @@ prepare () {
sudo -u $user rm -rf mjpeg
#Fedora has SELinux on by default so must make adjustments? Don't really know what these do...
if [ $INSTALL -eq 5 ]; then
semanage fcontext -a -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
semanage fcontext -a -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
semanage fcontext -a -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
semanage fcontext -a -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
fi
echo 'Starting generic service on port 5000'
systemctl start octoprint_default.service
@@ -582,6 +600,17 @@ prepare () {
fi
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() {
#reset
UDEV=''