install.sh aktualisiert

This commit is contained in:
2024-12-12 23:50:52 +01:00
parent 735f5be839
commit 41f23212cf

View File

@@ -13,37 +13,23 @@ print_status() {
echo -e "${RED}${NC} Starting System Update..." | tee -a /var/log/install echo -e "${RED}${NC} Starting System Update..." | tee -a /var/log/install
sudo apt-get update >>/var/log/install 2>&1 && print_status "System Update" sudo apt-get update >>/var/log/install 2>&1 && print_status "System Update"
sudo apt-get upgrade -y >>/var/log/install 2>&1 && print_status "System Upgrade" sudo apt-get full-upgrade -y >>/var/log/install 2>&1 && print_status "System Upgrade"
#sudo apt-get dist-upgrade -y >>/var/log/install 2>&1 && print_status "System Dist-Upgrade"
echo -e "${RED}${NC} Installing required packages..." | tee -a /var/log/install echo -e "${RED}${NC} Installing required packages..." | tee -a /var/log/install
sudo apt install --no-install-recommends xserver-xorg x11-xserver-utils xinit chromium-browser fonts-noto-color-emoji nfs-common watchdog xdotool rsync -y >>/var/log/install 2>&1 && print_status "Required packages installed" sudo apt install --no-install-recommends realvnc-vnc-server xserver-xorg x11-xserver-utils xinit chromium-browser fonts-noto-color-emoji nfs-common watchdog xdotool rsync -y >>/var/log/install 2>&1 && print_status "Required packages installed"
#sudo apt install realvnc-vnc-server overlayroot -y >>/var/log/install 2>&1 && print_status "VNC and Overlayroot installed"
sudo apt autoremove -y >>/var/log/install 2>&1 && print_status "Autoremove" sudo apt autoremove -y >>/var/log/install 2>&1 && print_status "Autoremove"
sudo apt clean >>/var/log/install 2>&1 && print_status "Clean" sudo apt clean >>/var/log/install 2>&1 && print_status "Clean"
rm -rf /var/lib/apt/lists/* >>/var/log/install 2>&1 && print_status "Clear cache" rm -rf /var/lib/apt/lists/* >>/var/log/install 2>&1 && print_status "Clear cache"
echo -e "${RED}${NC} Configuring Raspberry Pi settings..." | tee -a /var/log/install echo -e "${RED}${NC} Configuring Raspberry Pi settings..." | tee -a /var/log/install
#sudo raspi-config nonint do_camera 0 >> /var/log/install 2>&1 && print_status "Camera disabled"
#sudo raspi-config nonint do_vnc 0 >> /var/log/install 2>&1 && print_status "VNC enabled"
#sudo raspi-config nonint do_spi 0 >> /var/log/install 2>&1 && print_status "SPI disabled"
#sudo raspi-config nonint do_i2c 0 >> /var/log/install 2>&1 && print_status "I2C disabled"
#sudo raspi-config nonint do_serial 0 0 >> /var/log/install 2>&1 && print_status "Serial port disabled"
#sudo raspi-config nonint do_onewire 0 >> /var/log/install 2>&1 && print_status "1-Wire disabled"
#sudo raspi-config nonint do_remote_gpio 0 >> /var/log/install 2>&1 && print_status "Remote GPIO disabled"
#sudo raspi-config nonint do_gpu_memory 256 >> /var/log/install 2>&1 && print_status "GPU memory set to 256MB"
#sudo raspi-config nonint do_locale "de_DE.UTF-8" "de_DE.UTF-8" >> /var/log/install 2>&1 && print_status "Locale set to de_DE.UTF-8"
#sudo raspi-config nonint do_timezone "Europe/Berlin" >> /var/log/install 2>&1 && print_status "Timezone set to Europe/Berlin"
sudo raspi-config nonint do_boot_order 3 >> /var/log/install 2>&1 && print_status "Boot order set to network boot"
echo -e "${RED}${NC} Creating user 'loginuser'..." | tee -a /var/log/install echo -e "${RED}${NC} Creating user 'loginuser'..." | tee -a /var/log/install
sudo adduser --disabled-password --gecos "" loginuser >>/var/log/install 2>&1 && print_status "User 'loginuser' created" sudo adduser --disabled-password --gecos "" loginuser >>/var/log/install 2>&1 && print_status "User 'loginuser' created"
echo -e "${RED}${NC} Copy requiered files..." | tee -a /var/log/install echo -e "${RED}${NC} Copy requiered files..." | tee -a /var/log/install
mkdir -p /etc/chromium/policies/managed /home/wis/.ssh /usr/bin/custom /etc/systemd/system/getty@tty1.service.d/ mkdir -p /etc/chromium/policies/managed /etc/systemd/system/getty@tty1.service.d /home/wis/.ssh /usr/bin/custom /etc/systemd/system/getty@tty1.service.d/
declare -A files=( declare -A files=(
["/root/rps-client/boot/ro-root.sh"]="/boot/ro-root.sh" ["/root/rps-client/sbin/overlayRoot.sh"]="/sbin/overlayRoot.sh"
["/root/rps-client/boot/firmware/ro-root.sh"]="/boot/firmware/ro-root.sh"
["/root/rps-client/etc/dhcp/dhclient.conf"]="/etc/dhcp/dhclient.conf" ["/root/rps-client/etc/dhcp/dhclient.conf"]="/etc/dhcp/dhclient.conf"
["/root/rps-client/etc/systemd/system/hostname.service"]="/etc/systemd/system/hostname.service" ["/root/rps-client/etc/systemd/system/hostname.service"]="/etc/systemd/system/hostname.service"
["/root/rps-client/etc/systemd/system/watchdog-monitor.service"]="/etc/systemd/system/watchdog-monitor.service" ["/root/rps-client/etc/systemd/system/watchdog-monitor.service"]="/etc/systemd/system/watchdog-monitor.service"
@@ -66,40 +52,8 @@ for src in "${!files[@]}"; do
done done
print_status "All files have been successfully copied" print_status "All files have been successfully copied"
echo -e "${RED}${NC} Configuring VNC..." | tee -a /var/log/install
sudo systemctl enable vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC service enabled"
sudo systemctl start vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC service started"
CONFIG_FILE="/root/.vnc/config.d/vncserver-x11"
if [ ! -d "$(dirname "$CONFIG_FILE")" ]; then
mkdir -p "$(dirname "$CONFIG_FILE")"
echo -e "${GREEN}${NC} Created directory for VNC config." | tee -a /var/log/install
fi
read -p "Do you want to set a VNC password? (y/n): " -r
if [[ $REPLY =~ ^[Yy](e[Ss]?)?$ ]]; then
vncpasswd
echo -e "${GREEN}${NC} VNC password has been set." | tee -a /var/log/install
else
echo -e "${GREEN}${NC} No VNC password will be set." | tee -a /var/log/install
fi
if [ "$(vncpasswd -o)" = 'none' ]; then
echo "Authentication=none" >> "$CONFIG_FILE"
echo "Geometry=1920x1080" >> "$CONFIG_FILE"
echo "# Version 1.0:" >> "$CONFIG_FILE"
echo "# Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspbian as custom PXE init script." >> "$CONFIG_FILE"
print_status "VNC config set to no authentication with geometry 1920x1080." >> /var/log/install 2>&1
else
echo "Authentication=none" >> "$CONFIG_FILE"
echo "Geometry=1920x1080" >> "$CONFIG_FILE"
echo "# Version 1.0:" >> "$CONFIG_FILE"
echo "# Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspbian as custom PXE init script." >> "$CONFIG_FILE"
print_status "VNC password is set. Authentication will be required." >> /var/log/install 2>&1
fi
sudo raspi-config nonint do_vnc 0 >>/var/log/install 2>&1 && print_status "VNC enabled in raspi-config"
sudo systemctl unmask vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC unmask"
sudo systemctl enable vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC enabled systemctl"
echo -e "${RED}${NC} Setting permissions for 'loginuser'..." | tee -a /var/log/install echo -e "${RED}${NC} Setting permissions for 'loginuser'..." | tee -a /var/log/install
sudo tee /etc/sudoers.d/loginuser >/dev/null << 'EOF' sudo tee /etc/sudoers.d/loginuser >>/var/log/install 2>&1 && print_status "Sudo rights for 'loginuser' set" << 'EOF'
loginuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop chromium-monitor, /usr/bin/systemctl start chromium-monitor loginuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop chromium-monitor, /usr/bin/systemctl start chromium-monitor
loginuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop watchdog-monitor, /usr/bin/systemctl start watchdog-monitor loginuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop watchdog-monitor, /usr/bin/systemctl start watchdog-monitor
loginuser ALL=(ALL) NOPASSWD: /usr/bin/cat /var/lib/dhcp/* loginuser ALL=(ALL) NOPASSWD: /usr/bin/cat /var/lib/dhcp/*
@@ -130,11 +84,49 @@ sudo chown loginuser:loginuser /var/log/watchdog.log /var/log/chromium-monitor.l
sudo chmod 777 /var/log/watchdog.log /var/log/chromium-monitor.log /var/log/hostname.log >>/var/log/install 2>&1 && print_status "Permissions set for log files" sudo chmod 777 /var/log/watchdog.log /var/log/chromium-monitor.log /var/log/hostname.log >>/var/log/install 2>&1 && print_status "Permissions set for log files"
sudo chmod +x /usr/bin/custom/* >>/var/log/install 2>&1 && print_status "Permissions set for script files" sudo chmod +x /usr/bin/custom/* >>/var/log/install 2>&1 && print_status "Permissions set for script files"
echo -e "${RED}${NC} Enabling services..." | tee -a /var/log/install echo -e "${RED}${NC} Configure services..." | tee -a /var/log/install
sudo systemctl daemon-reload >>/var/log/install 2>&1 && print_status "Daemon reloaded" sudo systemctl daemon-reload >>/var/log/install 2>&1 && print_status "Daemon reloaded"
sudo systemctl enable hostname watchdog chromium-monitor vncserver-x11-serviced.service getty@tty1 >>/var/log/install 2>&1 && print_status "Services enabled" sudo systemctl enable hostname chromium-monitor getty@tty1 >>/var/log/install 2>&1 && print_status "Services enabled"
sudo systemctl disable watchdog >>/var/log/install 2>&1 && print_status "Watchdog disabled"
sudo systemctl restart getty@tty1 >>/var/log/install 2>&1 && print_status "getty service restarted" sudo systemctl restart getty@tty1 >>/var/log/install 2>&1 && print_status "getty service restarted"
echo -e "${RED}${NC} Configure performance teaks..." | tee -a /var/log/install
echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor >>/var/log/install 2>&1 && print_status "CPU set to high"
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target >>/var/log/install 2>&1 && print_status "Powercfg off"
echo -e "${RED}${NC} Cleaning up installer..." | tee -a /var/log/install
sudo rm -rf ./rps-client >>/var/log/install 2>&1 && print_status "Installer cleaned up"
echo -e "${RED}${NC} Configuring VNC..." | tee -a /var/log/install
sudo systemctl enable vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC service enabled"
sudo systemctl start vncserver-x11-serviced.service >>/var/log/install 2>&1 && print_status "VNC service started"
CONFIG_FILE="/root/.vnc/config.d/vncserver-x11"
if [ ! -d "$(dirname "$CONFIG_FILE")" ]; then
mkdir -p "$(dirname "$CONFIG_FILE")"
echo -e "${GREEN}${NC} Created directory for VNC config." | tee -a /var/log/install
fi
echo -e "${RED}${NC} Do you want to set a VNC password? (y/n):" | tee -a /var/log/install
read -r config_vnc
if [[ "$config_vnc" =~ ^[Yy](e[Ss]?)?$ ]]; then
vncpasswd
echo -e "${GREEN}${NC} VNC password has been set." | tee -a /var/log/install
else
echo -e "${GREEN}${NC} No VNC password will be set." | tee -a /var/log/install
fi
if [ "$(vncpasswd -o)" = 'none' ]; then
echo "Authentication=none" >> "$CONFIG_FILE"
echo "Geometry=1920x1080" >> "$CONFIG_FILE"
echo "# Version 1.0:" >> "$CONFIG_FILE"
echo "# Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspbian as custom PXE init script." >> "$CONFIG_FILE"
print_status "VNC config set to no authentication with geometry 1920x1080." >> /var/log/install 2>&1
else
echo "Authentication=none" >> "$CONFIG_FILE"
echo "Geometry=1920x1080" >> "$CONFIG_FILE"
echo "# Version 1.0:" >> "$CONFIG_FILE"
echo "# Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspbian as custom PXE init script." >> "$CONFIG_FILE"
print_status "VNC password is set. Authentication will be required." >> /var/log/install 2>&1
fi
echo -e "${RED}${NC} Do you want to clean up unused kernels? (y/n):" | tee -a /var/log/install echo -e "${RED}${NC} Do you want to clean up unused kernels? (y/n):" | tee -a /var/log/install
read -r clean_kernels read -r clean_kernels
if [[ "$clean_kernels" =~ ^[Yy](e[Ss]?)?$ ]]; then if [[ "$clean_kernels" =~ ^[Yy](e[Ss]?)?$ ]]; then
@@ -145,30 +137,8 @@ else
echo -e "${GREEN}${NC} Cleanup has been skipped" | tee -a /var/log/install echo -e "${GREEN}${NC} Cleanup has been skipped" | tee -a /var/log/install
fi fi
echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo -e "${GREEN}${NC} Installation complete. Press any key to exit..." | tee -a /var/log/install 2>&1
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
echo -e "${RED}${NC} Cleaning up installer..." | tee -a /var/log/install
sudo rm -rf ./rps-client >>/var/log/install 2>&1 && print_status "Installer cleaned up"
#echo -e "${RED}→${NC} Configuring Overlayroot..." | tee -a /var/log/install
#CONFIG_FILE="/etc/overlayroot.conf"
#echo 'overlayroot_cfgdisk="disabled"' | sudo tee "$CONFIG_FILE" >/dev/null
#echo 'overlayroot=""' | sudo tee -a "$CONFIG_FILE" >/dev/null
#read -p "Do you want to activate overlayfs? (y/n): " -r
#if [[ $REPLY =~ ^[Yy](e[Ss]?)?$ ]]; then
# echo 'overlayroot="tmpfs:overlayfs"' | sudo tee -a "$CONFIG_FILE"
# sudo raspi-config nonint do_overlayroot 0 >>/var/log/install 2>&1 && print_status "Overlayroot enabled in raspi-config"
# echo -e "${GREEN}✔${NC} Overlayroot has been activated." | tee -a /var/log/install
#else
# echo 'overlayroot=""' | sudo tee -a "$CONFIG_FILE"
# echo -e "${GREEN}✔${NC} Overlayroot has not been activated." | tee -a /var/log/install
#fi
echo -e "${GREEN}${NC} Installation complete. Press any key to reboot..." | tee -a /var/log/install 2>&1
read -n 1 -s read -n 1 -s
sudo reboot
# Version 1.2: # Version 1.2:
# Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspian as custom pxe init script. # Created 2024 by Tim Eertmoed, Christian Hampp @ WiS IT-Solutions GmbH, Germany to work on Raspian as custom pxe init script.