Votre Nom 5 months ago
parent
commit
11a75e3512
1 changed files with 480 additions and 0 deletions
  1. 480 0
      miner.sh

+ 480 - 0
miner.sh

@@ -0,0 +1,480 @@
+#!/bin/bash
+set -e
+Version=18.4.1
+Cuda=No
+kernel_custom=YES
+Miners=Yes
+kernel_dkms="5.15.0-71-generic"
+driver=NVIDIA
+
+if (( $EUID != 0 )); then
+   echo -e "$(tput setaf 11)This must be run as root. Try 'sudo $0'.$(tput sgr0)"
+   exit 1
+fi
+clear
+if [ ! -f /home/wareck/.ipass ]
+then
+echo "passe=1" > /home/wareck/.ipass
+fi
+source /home/wareck/.ipass
+
+
+export TERM=xterm-256color
+Cuda=${Cuda^^}
+kernel_custom=${kernel_custom^^}
+driver=${driver^^}
+Miners=${Miners^^}
+cpass=""
+function ubuntu_version_check {
+if [[ $(lsb_release -rs) == "20.04" ]]
+then
+
+      Ubuntu_version="20.04.6"
+
+else
+       echo "Non-compatible version !"
+       exit 0
+fi
+}
+
+function print_centered {
+     [[ $# == 0 ]] && return 1
+
+     declare -i TERM_COLS="$(tput cols)"
+     declare -i str_len="${#1}"
+     [[ $str_len -ge $TERM_COLS ]] && {
+          echo "$1";
+          return 0;
+     }
+
+     declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
+     [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
+     filler=""
+     for (( i = 0; i < filler_len; i++ )); do
+          filler="${filler}${ch}"
+     done
+
+     printf "%s%s%s" "$filler" "$1" "$filler"
+     [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
+     printf "\n"
+
+     return 0
+}
+
+function decompte_ {
+echo -e "$(tput setaf 10)\nReboot in 10 seconds (CRTL+C to abord):$(tput sgr0)"
+for i in {9..0}
+do
+echo -e -n "$i "
+sleep 1
+done
+echo ""
+sudo reboot
+}
+
+function intro_ {
+print_centered "$(tput setaf 5)"
+print_centered "░  ░░░░  ░░        ░░   ░░░  ░░        ░░  ░░░░  ░░       ░░"
+print_centered "▒   ▒▒   ▒▒▒▒▒  ▒▒▒▒▒    ▒▒  ▒▒  ▒▒▒▒▒▒▒▒  ▒▒▒▒  ▒▒  ▒▒▒▒  ▒"
+print_centered "▓        ▓▓▓▓▓  ▓▓▓▓▓  ▓  ▓  ▓▓      ▓▓▓▓  ▓▓▓▓  ▓▓       ▓▓"
+print_centered "█  █  █  █████  █████  ██    ██  ████████  ████  ██  ███  ██"
+print_centered "█  ████  ██        ██  ███   ██        ███      ███  ████  █"
+echo -n "$(tput sgr0)"
+print_centered "Simple miner installation script v$Version"
+print_centered "Ubuntu version 20.04.6"
+if [ $Cuda = "YES" ]
+then
+print_centered "CUDA Compute Drivers"
+fi
+print_centered "Stage $passe/4"
+}
+
+function update_ {
+case $passe in
+1)
+   echo -e "$(tput setaf 10)\nUpdate and install packages (second pass):$(tput sgr0)"
+   sudo apt-get update
+   echo -e ""
+   sudo apt-get install git build-essential libtool pkg-config automake autoconf ethtool net-tools \
+   tasksel lzma-dev lzma cmake libuv1-dev libssl-dev msr-tools openssh-server -y
+   echo -e ""
+   sudo apt-get install zstd pixz pbzip2 pigz btrfs-progs \
+   libcurl4-openssl-dev screen libudev-dev libjansson-dev libncurses5-dev libmicrohttpd-dev curl nvme-cli -y
+   echo -e ""
+   sudo apt-get install libglib2.0-dev libgtk2.0-dev htop vlc locate cmake -y
+   echo -e "Done."
+   ;;
+2)
+   if [ $Cuda = "YES" ]
+   then
+   echo -e "$(tput setaf 10)\nInstall Cuda packages:$(tput sgr0)"
+   sudo apt-get install libgmp-dev libnuma-dev cmake libuv1-dev nvidia-cuda-dev libmicrohttpd-dev gcc-8 g++-8 nvidia-cuda-toolkit -y
+   fi
+   echo -e "Done.\n"
+   ;;
+esac
+}
+
+function kernel_check_ {
+unamestr=$(uname -r)
+if [ -f /tmp/ksource.txt ]; then rm /tmp/ksource.txt;fi
+wget -c -q http://192.168.1.8:3000/wareck/custom_kernel/raw/master/ksource.txt -O /tmp/ksource.txt
+source /tmp/ksource.txt
+if ! [[ "$unamestr" == $KLversion ]]
+then
+echo -e "\n$(tput setaf 10)Custom kernel install $(tput setaf 9)$KLversion$(tput setaf 10) (fix DKMS/WOL) :$(tput sgr0)"
+cd /tmp/
+wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/custom_kernel/$kernel_version
+chmod +x $kernel_version
+sudo ./$kernel_version
+if ! [ -f /etc/modprobe.d/blacklist-nvidia-nouveau.conf ]
+then
+echo "Blacklist nvidia-nouveau driver..."
+echo "System will reboot"
+sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
+sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
+fi
+fi
+}
+
+function nvidia_driver_ {
+if [ $passe = "1" ]
+then
+	if ! [ -f /etc/modprobe.d/blacklist-nvidia-nouveau.conf ]
+	then
+        echo "Blacklist nvidia-nouveau driver..."
+        echo "System will reboot"
+        sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
+        sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
+	fi
+	if [ $Cuda = "NO" ]
+	then
+	sudo apt-get install build-essential libglvnd-dev cmake -y
+	else
+	sudo apt-get install build-essential libglvnd-dev cmake libhugetlbfs-dev libc-dev libc6-dev g++ -y
+	fi
+	echo "passe=2" > /home/wareck/.ipass
+	decompte_
+fi
+if [ $passe = "2" ]
+then
+case $Cuda in
+NO)
+	echo -e "$(tput setaf 10)\nInstall NVIDIA T4:$(tput sgr0)"
+	sleep 3
+	wget -c http://folivier.homelinux.org/cube/pack/NVIDIA-Linux-x86_64-550.90.07_dc.run
+        chmod +x NVIDIA-Linux-x86_64-550.90.07_dc.run
+	sudo ./NVIDIA-Linux-x86_64-550.90.07_dc.run --silent --driver
+	sudo rm NVIDIA-Linux-x86_64-550.90.07_dc.run
+	echo "passe=3" > /home/wareck/.ipass
+	decompte_
+	;;
+YES)
+	echo -e "$(tput setaf 10)\nInstall CUDA Drivers :$(tput sgr0)"
+	cd /home/wareck/
+	echo -e "Download MegaDownload:"
+	git clone https://github.com/wareck/megadown.git
+	sudo cp /home/wareck/megadown/megadown /usr/local/bin/megadown
+	sudo rm -r /home/wareck/megadown
+	wget -c https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
+	chmod +x cuda_12.4.1_550.54.15_linux.run
+	sudo ./cuda_12.4.1_550.54.15_linux.run --silent --driver --toolkit
+	sudo rm cuda_12.4.1_550.54.15_linux.run
+	echo "passe=3" > /home/wareck/.ipass
+	decompte_
+;;
+esac
+fi
+}
+
+function download_packs_ {
+echo -e "$(tput setaf 10)\nDownload complement packs:$(tput sgr0)"
+wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/chia-miner.tar.xz -O /home/wareck/Build_Cube/pack/chia-miner.tar.xz
+wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/xmrig.tar.xz -O /home/wareck/Build_Cube/pack/xmrig.tar.xz
+wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gpu-miners.tar.xz -O /home/wareck/Build_Cube/pack/gpu-miners.tar.xz
+
+cp /home/wareck/Build_Cube/pack/gpu-miners.tar.xz /home/wareck
+cp /home/wareck/Build_Cube/pack/pack1.tar.xz /home/wareck
+cp /home/wareck/Build_Cube/pack/pack2.tar.xz /home/wareck
+cp /home/wareck/Build_Cube/pack/pack3.tar.xz /home/wareck
+cp /home/wareck/Build_Cube/pack/xmrig.tar.xz /home/wareck
+echo -e "Done."
+
+echo -e "$(tput setaf 10)\nDownloading miners:$(tput sgr0)"
+cd /home/wareck
+if ! [ -d miners ]; then mkdir -p miners;fi
+cd /home/wareck/miners
+
+if ! [ -d xmrig ]
+then
+git clone https://github.com/xmrig/xmrig.git
+echo -e ""
+fi
+}
+
+function build_miners_ {
+cmake_ #check cmake version
+cd /home/wareck
+tar xfJ gpu-miners.tar.xz
+cd /home/wareck/miners
+
+echo -e "$(tput setaf 10)\nUncompress xmr files:$(tput sgr0)"
+tar xfJ /home/wareck/xmrig.tar.xz --checkpoint=.100
+echo "Done."
+echo -n -e "\n"
+echo -e "$(tput setaf 10)\nBuild xmrig:$(tput sgr0)"
+
+cd xmrig
+git config --global --add safe.directory /home/wareck/miners/xmrig
+git pull
+sed -i "s/kDefaultDonateLevel = 5;/kDefaultDonateLevel = 0;/g" src/donate.h
+sed -i "s/kMinimumDonateLevel = 1;/kMinimumDonateLevel = 0;/g" src/donate.h
+cd scripts
+./build_deps.sh
+cd ..
+cd build
+cmake .. -DXMRIG_DEPS=scripts/deps
+make -j$((`nproc`))
+cd ..
+echo "Done."
+
+if [ -d /home/wareck/miners/xmrig-upx ];then rm -r /home/wareck/miners/xmrig-upx;fi
+if [ -d /home/wareck/miners/xmr-stak ];then rm -r /home/wareck/miners/xmr-stak;fi
+if [ -d /home/wareck/miners/xmr-stak-rx ];then rm -r /home/wareck/miners/xmr-stak-rx;fi
+sudo chmod -R 775 /home/wareck/miners
+}
+
+function configure_ {
+echo -e "$(tput setaf 10)\nConfig files:$(tput sgr0)"
+cd /home/wareck/
+zip="['firefox.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Terminal.desktop']"
+cat <<'EOF'>> zap
+#!/bin/bash
+gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 32
+gsettings set org.gnome.desktop.background picture-uri /home/wareck/Images/mr-robot-wallpapers.jpg
+gsettings set org.gnome.shell favorite-apps "XXX"
+#su wareck -c 'gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false'
+dconf load /org/gnome/terminal/ < /usr/local/bin/zap2
+EOF
+sed -i "s/XXX/$zip/g" zap
+
+UUID=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')
+cat <<'EOF'>> zap2
+[legacy/profiles:/:XXX]
+default-size-columns=110
+font='Monospace 9'
+use-system-font=false
+use-theme-colors=false
+EOF
+sed -i "s/XXX/$UUID/g" zap2
+chmod +x zap
+sudo cp zap /usr/local/bin
+sudo cp zap2 /usr/local/bin
+sudo rm zap
+sudo rm zap2
+sleep 1
+
+sudo rm -r -f /etc/update-motd.d/*
+tar xfJ pack1.tar.xz --checkpoint=.10
+echo -n -e "\n"
+sudo cp /home/wareck/pack2.tar.xz /
+sudo cp /home/wareck/pack3.tar.xz /
+cd /
+sudo tar xfJ pack2.tar.xz --checkpoint=.10
+sudo tar xfJ pack3.tar.xz --checkpoint=.10
+echo -n -e "\n"
+cd /home/wareck
+
+sudo sed -i -e "s/# set constantshow/set constantshow/g" /etc/nanorc
+
+if ! grep "wareck" /etc/sudoers >/dev/null
+then
+sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
+fi
+
+echo -e "$(tput setaf 10)\nBashrc mod:$(tput sgr0)"
+if [ $Cuda = "YES" ]
+then
+if ! grep "#mod for cuda" /home/wareck/.bashrc >/dev/null
+then
+echo '#mod for cuda' >>/home/wareck/.bashrc
+echo 'export PATH=/usr/local/cuda-12.3/bin/:$PATH'>>/home/wareck/.bashrc
+echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH'>>/home/wareck/.bashrc
+echo '' >>/home/wareck/.bashrc
+fi
+fi
+if ! grep "#mod for tightvncserver" /home/wareck/.bashrc >/dev/null
+then
+echo '#mod for tightvncserver' >>/home/wareck/.bashrc
+echo 'cd ~' >>/home/wareck/.bashrc
+fi
+echo "Done."
+
+echo -e "$(tput setaf 10)\nDisable IPv6:$(tput sgr0)"
+if ! grep "ipv6.disable=1" /etc/default/grub >/dev/null
+then
+sed -i -e "s/quiet splash/quiet splash ipv6.disable=1/g" /etc/default/grub
+sed -i -e "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"ipv6.disable=1 acpi_enforce_resources=lax/g" /etc/default/grub
+sudo update-grub2
+fi
+sudo chown -R wareck:wareck /home/wareck/miners/xmr*
+sudo apt-get remove light-locker* -y
+echo "Done."
+echo "passe=4" >/home/wareck/.ipass
+decompte_
+}
+
+function cleaning_ {
+echo -e "$(tput setaf 10)\nCleaning install files:$(tput sgr0)"
+if [ -f /pack2.tar.xz ]; then sudo rm /pack2.tar.xz ;fi
+if [ -f /pack3.tar.xz ]; then sudo rm /pack3.tar.xz ;fi
+if [ -f /home/wareck/pack1.tar.xz ]; then rm /home/wareck/pack1.tar.xz ;fi
+if [ -f /home/wareck/pack2.tar.xz ]; then rm /home/wareck/pack2.tar.xz ;fi
+if [ -f /home/wareck/pack3.tar.xz ]; then rm /home/wareck/pack3.tar.xz ;fi
+if [ -f /home/wareck/xmrig.tar.xz ]; then rm /home/wareck/xmrig.tar.xz ;fi
+if [ -f /home/wareck/gpu-miners.tar.xz ]; then rm /home/wareck/gpu-miners.tar.xz;fi
+if [ -r /home/wareck/Music ]; then sudo rm -r -f /home/wareck/Music ;fi
+if [ -r /home/wareck/Public ]; then sudo rm -r -f /home/wareck/Public ;fi
+if [ -r /home/wareck/Templates ]; then sudo rm -r -f /home/wareck/Templates ;fi
+if [ -r /home/wareck/Vidéos ]; then sudo rm -r -f /home/wareck/Vidéos ;fi
+if [ -f /home/wareck/NVIDIA-Linux-x86_64-470.74.run ]; then rm /home/wareck/NVIDIA-Linux-x86_64-470.74.run ;fi
+if [ -f /home/wareck/NVIDIA-Linux-x86_64-470.82.00.run ]; then rm /home/wareck/NVIDIA-Linux-x86_64-470.82.00.run ;fi
+if [ -f /home/wareck/.ipass ]; then rm /home/wareck/.ipass ;fi
+if [ -f /usr/local/bin/zap ]; then sudo rm /usr/local/bin/zap* ;fi
+if [ -f /home/wareck/.config/autostart/install_os.desktop ];then sudo rm /home/wareck/.config/autostart/install_os.desktop;fi
+if [ -f /home/wareck/.config/autostart/zappy.desktop ];then sudo rm /home/wareck/.config/autostart/zappy.desktop;fi
+if [ -r /lib/modules/5.15.0-60-generic ]; then sudo rm -r /lib/modules/5.15.0-60-generic ;fi
+if [ -r /lib/modules/5.15.0-46-generic ]; then sudo rm -r /lib/modules/5.15.0-46-generic ;fi
+if [ -r /lib/modules/5.15.0-70-generic ]; then sudo rm -r /lib/modules/5.15.0-70-generic ;fi
+cd /home/wareck/Build_Cube/pack
+sudo chown -R wareck:wareck /home/wareck/miners
+sudo chmod -R 775 /home/wareck/miners
+./clean.sh
+echo -e "Done. \n"
+
+echo `date` "install/update" >/home/wareck/.buildcube
+sudo apt-get autoremove -y
+sleep 1
+}
+
+function autoroot_ {
+if ! grep "#color putty" ~/.bashrc >/dev/null
+then
+echo "#color putty" >> ~/.bashrc
+echo "export TERM=xterm-256color" >> ~/.bashrc
+fi
+if [ ! -d /home/wareck/.config/autostart ]
+then
+echo -e "$(tput setaf 10)\nInit install & autostart:$(tput sgr0)"
+mkdir /home/wareck/.config/autostart
+echo -e "Done."
+sleep 1
+fi
+
+if [ ! -f /home/wareck/.config/autostart/install_os.desktop ]
+then
+cat <<'EOF'>> /home/wareck/.config/autostart/install_os.desktop
+[Desktop Entry]
+# VERSION=3.36.2
+Name=Terminal
+Comment=Use the command line
+Keywords=shell;prompt;command;commandline;cmd;
+TryExec=gnome-terminal
+Exec=gnome-terminal -- bash -c "sudo /home/wareck/Build_Cube/miner.sh; exec bash"
+Icon=org.gnome.Terminal
+Type=Application
+Categories=GNOME;GTK;System;TerminalEmulator;
+StartupNotify=true
+X-GNOME-SingleWindow=false
+OnlyShowIn=GNOME;Unity;
+Actions=new-window;preferences;
+X-Ubuntu-Gettext-Domain=gnome-terminal
+
+[Desktop Action new-window]
+Name=New Window
+Exec=gnome-terminal --window
+
+[Desktop Action preferences]
+Name=Preferences
+Exec=gnome-terminal --preferences
+EOF
+chmod +x /home/wareck/.config/autostart/install_os.desktop
+fi
+
+if [ ! -f /home/wareck/.config/autostart/zappy.desktop ]
+then
+cat <<'EOF'>> /home/wareck/.config/autostart/zappy.desktop
+[Desktop Entry]
+# VERSION=3.36.2
+Name=Terminal
+Comment=Use the command line
+Keywords=shell;prompt;command;commandline;cmd;
+TryExec=gnome-terminal
+Exec=gnome-terminal -- bash -c "/usr/local/bin/zap"
+Icon=org.gnome.Terminal
+Type=Application
+Categories=GNOME;GTK;System;TerminalEmulator;
+StartupNotify=true
+X-GNOME-SingleWindow=false
+OnlyShowIn=GNOME;Unity;
+Actions=new-window;preferences;
+X-Ubuntu-Gettext-Domain=gnome-terminal
+
+[Desktop Action new-window]
+Name=New Window
+Exec=gnome-terminal --window
+
+[Desktop Action preferences]
+Name=Preferences
+Exec=gnome-terminal --preferences
+EOF
+chmod +x /home/wareck/.config/autostart/zappy.desktop
+fi
+if ! grep "wareck" /etc/sudoers >/dev/null
+then
+sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
+fi
+if [ $passe="2" ]
+then
+echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
+sudo apt-get update
+sleep 1
+fi
+}
+
+function cmake_ {
+pids=""
+/home/wareck/Build_Cube/options/tools/_cmake.sh rollback & pids="$pids $!"
+wait $pids
+sudo ldconfig
+}
+
+intro_
+case $passe in
+1)
+  autoroot_
+  ubuntu_version_check
+  update_
+  kernel_check_
+  nvidia_driver_
+  ;;
+2)
+  nvidia_driver_
+  update_
+  ;;
+3)
+  download_packs_
+  build_miners_
+  configure_
+  ;;
+4)
+  cleaning_
+  dynmotd
+  ;;
+*) ;;
+esac
+
+echo -e "$(tput setaf 10)\nEnd of script:$(tput sgr0) \n"
+echo -e "$(tput setaf 7)Need to install webmin manually (reboot required)$(tput sgr0)"
+echo -e "$(tput setaf 7)after install webmin, reboot is required $(tput sgr0)"
+echo -e ""