build_cube.sh 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  1. #!/bin/bash
  2. set -e
  3. Version=17.0
  4. Cuda=YES
  5. kernel_custom=YES
  6. Webmin="webmin-2.102"
  7. kernel_dkms="5.15.0-71-generic"
  8. driver=NVIDIA
  9. if (( $EUID != 0 )); then
  10. echo -e "$(tput setaf 11)This must be run as root. Try 'sudo $0'.$(tput sgr0)"
  11. exit 1
  12. fi
  13. clear
  14. function ubuntu_version_check {
  15. if [[ $(lsb_release -rs) == "20.04" ]]
  16. then
  17. Ubuntu_version="20.04.5"
  18. else
  19. echo "Non-compatible version"
  20. exit 0
  21. fi
  22. }
  23. function print_centered {
  24. [[ $# == 0 ]] && return 1
  25. declare -i TERM_COLS="$(tput cols)"
  26. declare -i str_len="${#1}"
  27. [[ $str_len -ge $TERM_COLS ]] && {
  28. echo "$1";
  29. return 0;
  30. }
  31. declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
  32. [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
  33. filler=""
  34. for (( i = 0; i < filler_len; i++ )); do
  35. filler="${filler}${ch}"
  36. done
  37. printf "%s%s%s" "$filler" "$1" "$filler"
  38. [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
  39. printf "\n"
  40. return 0
  41. }
  42. function decompte_ {
  43. echo -e "$(tput setaf 10)\nReboot in 10 seconds (CRTL+C to abord):$(tput sgr0)"
  44. for i in {9..0}
  45. do
  46. echo -e -n "$i "
  47. sleep 1
  48. done
  49. echo ""
  50. sudo reboot
  51. }
  52. function intro_ {
  53. print_centered "$(tput setaf 5)"
  54. print_centered " ██████╗██╗ ██╗██████╗ ███████╗"
  55. print_centered "██╔════╝██║ ██║██╔══██╗██╔════╝"
  56. print_centered "██║ ██║ ██║██████╔╝█████╗ "
  57. print_centered "██║ ██║ ██║██╔══██╗██╔══╝ "
  58. print_centered "╚██████╗╚██████╔╝██████╔╝███████╗"
  59. print_centered " ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝"
  60. echo -n "$(tput sgr0)"
  61. print_centered "Cube Server installation script v$Version"
  62. print_centered "Ubuntu version 20.04"
  63. print_centered "GA990xa-ud3 $Drivers"
  64. if [ $Cuda = "YES" ]
  65. then
  66. print_centered "CUDA version"
  67. fi
  68. sleep 3
  69. }
  70. function update_ {
  71. if [ -f /home/wareck/.pass2 ] && [ ! -f /home/wareck/.pass3 ] && [ ! -f /home/wareck/.pass4 ]
  72. then
  73. echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
  74. sudo apt-get update
  75. echo -e ""
  76. sudo apt-get install lxde lxde-icon-theme -y
  77. echo -e ""
  78. sudo apt-get install samba cifs-utils mdadm git build-essential libtool pkg-config automake autoconf ethtool net-tools openvpn filezilla \
  79. tasksel lzma-dev lzma cmake libuv1-dev libssl-dev msr-tools tightvncserver lm-sensors openssh-server xfsprogs -y
  80. echo -e ""
  81. sudo apt-get install pixz pbzip2 pigz btrfs-progs gparted gpart gnome-remote-desktop libcanberra-gtk-module \
  82. ctorrent libcurl4-openssl-dev bison byacc screen libudev-dev libjansson-dev libncurses5-dev libmicrohttpd-dev curl nvme-cli -y
  83. echo -e ""
  84. sudo apt-get install libglib2.0-dev libgtk2.0-dev libsensors4-dev htop vlc locate -y
  85. echo -e ""
  86. if [ $Cuda = "YES" ]
  87. then
  88. echo -e "$(tput setaf 10)\nInstall Cuda packages:$(tput sgr0)"
  89. sudo apt-get install libgmp-dev libnuma-dev cmake libuv1-dev nvidia-cuda-dev libmicrohttpd-dev gcc-8 g++-8 nvidia-cuda-toolkit -y
  90. fi
  91. echo -e "Done."
  92. fi
  93. }
  94. function kernel_check_ {
  95. unamestr=$(uname -r)
  96. case $kernel_custom in
  97. NO)
  98. if [[ "$unamestr" == '5.15.0-69-generic' ]]
  99. then
  100. echo -e "\n$(tput setaf 10)DKMS Kernel install :$(tput sgr0)"
  101. sudo rm /boot/config-5.15*
  102. sudo rm /boot/initrd.img-5.15*
  103. sudo rm /boot/System.map-5.15*
  104. sudo rm /boot/vmlinuz-5.15*
  105. sudo apt-get install linux-image-5.4.0-54-generic linux-headers-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic htop -y
  106. sudo update-grub2
  107. sudo apt-mark hold linux-image-5.4.0-54-generic linux-headers-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic
  108. autoroot_
  109. decompte_
  110. fi
  111. if [[ "$unamestr" == '5.4.0-139-generic' ]]
  112. then
  113. sudo rm /boot/config-5.4.0-139-generic | true
  114. sudo rm /boot/System.map-5.4.0-139-generic | true
  115. sudo rm /boot/initrd.img-5.4.0-139-generic | true
  116. sudo rm /boot/vmlinuz-5.4.0-139-generic | true
  117. sudo update-grub2
  118. sudo apt-mark hold linux-image-$kernel_dkms linux-headers-$kernel_dkms linux-modules-extra-$kernel_dkms
  119. autoroot_
  120. decompte_
  121. fi
  122. ;;
  123. YES)
  124. if [ -f /tmp/ksource.txt ]; then rm /tmp/ksource.txt;fi
  125. wget -c -q http://192.168.1.8:3000/wareck/custom_kernel/raw/master/ksource.txt -O /tmp/ksource.txt
  126. source /tmp/ksource.txt
  127. if ! [[ "$unamestr" == $KLversion ]]
  128. then
  129. echo -e "\n$(tput setaf 10)Custom kernel install $(tput setaf 9)$KLversion$(tput setaf 10) (fix DKMS/WOL) :$(tput sgr0)"
  130. cd /tmp/
  131. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/custom_kernel/$kernel_version
  132. chmod +x $kernel_version
  133. sudo ./$kernel_version
  134. nvidia_driver_
  135. autoroot_
  136. decompte_
  137. fi
  138. ;;
  139. esac
  140. }
  141. function nvidia_driver_ {
  142. if ! [ -f /home/wareck/.pass1 ]
  143. then
  144. if ! [ -f /etc/modprobe.d/blacklist-nvidia-nouveau.conf ]
  145. then
  146. echo "Blacklist nvidia-nouveau driver..."
  147. echo "System will reboot"
  148. sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
  149. sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
  150. fi
  151. case $Cuda in
  152. NO)
  153. sudo apt-get install build-essential libglvnd-dev -y
  154. ;;
  155. YES)
  156. sudo apt-get install build-essential libglvnd-dev cmake libhugetlbfs-dev libc-dev libc6-dev g++ -y
  157. ;;
  158. *)
  159. ;;
  160. esac
  161. #sudo update-initramfs -u
  162. touch /home/wareck/.pass1
  163. decompte_
  164. fi
  165. if ! [ -f /home/wareck/.pass2 ]
  166. then
  167. sleep 1
  168. case $Cuda in
  169. NO)
  170. echo -e "$(tput setaf 10)\nInstall NVIDIA GTX1080 Drivers :$(tput sgr0)"
  171. sleep 3
  172. sudo apt-get install nvidia-driver-525 -y
  173. touch /home/wareck/.pass2
  174. decompte_
  175. ;;
  176. YES)
  177. echo -e "$(tput setaf 10)\nInstall CUDA Drivers :$(tput sgr0)"
  178. cd /home/wareck/
  179. echo -e "Download MegaDownload:"
  180. git clone https://github.com/wareck/megadown.git
  181. sudo cp /home/wareck/megadown/megadown /usr/local/bin/megadown
  182. sudo rm -r /home/wareck/megadown
  183. #megadown https://mega.nz/file/r0wwnZCJ#27WWRMwSsGYXiMUHf2OgcGYp2O2itChsBxcK9znmr5E
  184. #chmod +x cuda_11.8.0_520.61.05_linux.run
  185. #sudo ./cuda_11.8.0_520.61.05_linux.run
  186. #sudo rm cuda_11.8.0_520.61.05_linux.run
  187. wget -c https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
  188. chmod +x cuda_12.2.2_535.104.05_linux.run
  189. sudo ./cuda_12.2.2_535.104.05_linux.run
  190. sudo rm cuda_12.2.2_535.104.05_linux.run
  191. touch /home/wareck/.pass2
  192. decompte_
  193. ;;
  194. esac
  195. fi
  196. }
  197. function download_packs_ {
  198. if [ ! -f /home/wareck/.pass3 ]
  199. then
  200. echo -e "$(tput setaf 10)\nDownload complement packs:$(tput sgr0)"
  201. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/cgminer.conf -O /home/wareck/Build_Cube/pack/cgminer.conf
  202. 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
  203. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gerbera.tar.xz -O /home/wareck/Build_Cube/pack/gerbera.tar.xz
  204. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/start_cgminer.tar.xz -O /home/wareck/Build_Cube/pack/start_cgminer.tar.xz
  205. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/$Webmin.tar.xz -O /home/wareck/Build_Cube/pack/$Webmin.tar.xz
  206. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/xmrig.tar.xz -O /home/wareck/Build_Cube/pack/xmrig.tar.xz
  207. wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/zfsmanager-0.0.4.wbm.gz -O /home/wareck/Build_Cube/pack/zfsmanager-0.0.4.wbm.gz
  208. 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
  209. cp /home/wareck/Build_Cube/pack/gpu-miners.tar.xz /home/wareck
  210. cp /home/wareck/Build_Cube/pack/pack1.tar.xz /home/wareck
  211. cp /home/wareck/Build_Cube/pack/pack2.tar.xz /home/wareck
  212. cp /home/wareck/Build_Cube/pack/pack3.tar.xz /home/wareck
  213. cp /home/wareck/Build_Cube/pack/xmrig.tar.xz /home/wareck
  214. cp /home/wareck/Build_Cube/pack/start_cgminer.tar.xz /home/wareck
  215. echo "Done."
  216. if [ ! -d /home/wareck/$Webmin ]
  217. then
  218. cp /home/wareck/Build_Cube/pack/$Webmin.tar.xz /home/wareck/
  219. cd /home/wareck/
  220. echo -e "$(tput setaf 10)\nWebmin uncompress:$(tput sgr0)"
  221. tar xfJ $Webmin.tar.xz
  222. rm $Webmin.tar.xz
  223. echo -e "Done"
  224. fi
  225. echo -e "$(tput setaf 10)\nDownloading miners:$(tput sgr0)"
  226. cd /home/wareck
  227. if ! [ -d miners ]; then mkdir -p miners;fi
  228. cd /home/wareck/miners
  229. if ! [ -d xmrig ]
  230. then
  231. git clone https://github.com/xmrig/xmrig.git
  232. echo -e ""
  233. fi
  234. if ! [ -d xmr-stak ]
  235. then
  236. git clone https://github.com/fireice-uk/xmr-stak.git
  237. echo -e ""
  238. fi
  239. if ! [ -d xmr-stak-rx ]
  240. then
  241. git clone https://github.com/fireice-uk/xmr-stak.git -b xmr-stak-rx xmr-stak-rx
  242. echo -e ""
  243. fi
  244. if ! [ -d cgminer-gekko ]
  245. then
  246. git clone https://github.com/wareck/cgminer-gekko.git
  247. echo -e ""
  248. fi
  249. if ! [ -d cgminer-lketc ]
  250. then
  251. git clone https://github.com/wareck/cgminer-lketc.git
  252. fi
  253. fi
  254. echo "Done."
  255. }
  256. function build_miners_ {
  257. if [ ! -f /home/wareck/.pass3 ]
  258. then
  259. cmake_ #check cmake version
  260. cd /home/wareck
  261. tar xfJ gpu-miners.tar.xz
  262. cd /home/wareck/miners
  263. echo -e "$(tput setaf 10)\nBuild Cgminer-gekko:$(tput sgr0)"
  264. cd cgminer-gekko
  265. sudo usermod -a -G dialout,plugdev wareck
  266. sudo cp 01-cgminer.rules /etc/udev/rules.d/
  267. CFLAGS="-O2 -march=native" ./autogen.sh
  268. ./configure --enable-gekko
  269. make -j$((`nproc`+1))
  270. tar xfJ /home/wareck/start_cgminer.tar.xz
  271. rm /home/wareck/start_cgminer.tar.xz
  272. cd ..
  273. cat <<'EOF'>> /tmp/cgminer
  274. #!/bin/sh -e
  275. ### BEGIN INIT INFO
  276. # Provides: cgminer
  277. # Required-Start: networking
  278. # Default-Start: 3 4 5
  279. # Default-Stop: 0 6
  280. ### END INIT INFO
  281. case "$1" in
  282. start)
  283. cd /home/wareck/miners/cgminer-gekko/
  284. su wareck -c "screen -dmS cgminer /home/wareck/miners/cgminer-gekko/cgminer"
  285. ;;
  286. stop)
  287. sudo killall -9 cgminer | true
  288. ;;
  289. *)
  290. echo "Usage: /etc/init.d/cgminer {start|stop}"
  291. exit 1
  292. ;;
  293. esac
  294. exit 0
  295. EOF
  296. chmod +x /tmp/cgminer
  297. sudo cp /tmp/cgminer /etc/init.d/cgminer
  298. sudo update-rc.d cgminer defaults
  299. if ! [ -d /home/wareck/.cgminer ]
  300. then
  301. mkdir /home/wareck/.cgminer
  302. fi
  303. cat <<'EOF'>> /tmp/cgminer.conf
  304. {
  305. "pools" : [
  306. {
  307. "url" : "stratum+tcp://stratum.braiins.com:3333",
  308. "user" : "wareck.gekko",
  309. "pass" : "x"
  310. }
  311. ]
  312. ,
  313. "api-description" : "cgminer 4.12.0-wrk",
  314. "api-mcast-addr" : "224.0.0.75",
  315. "api-mcast-code" : "FTW",
  316. "api-mcast-des" : "",
  317. "api-mcast-port" : "4028",
  318. "api-port" : "4028",
  319. "api-host" : "0.0.0.0",
  320. "gekko-lowboost" : true,
  321. "gekko-2pac-freq" : "155.0",
  322. "gekko-compac-freq" : "150.0",
  323. "gekko-tune-down" : "95.0",
  324. "gekko-tune-up" : "97.0",
  325. "gekko-wait-factor" : "0.5",
  326. "gekko-bauddiv" : "0",
  327. "gekko-newpac-freq" : "100",
  328. "gekko-start-freq" : "100",
  329. "gekko-step-freq" : "6.2",
  330. "gekko-step-delay" : "15",
  331. "gekko-tune2" : "0",
  332. "fallback-time" : "120",
  333. "hotplug" : "5",
  334. "log" : "5",
  335. "shares" : "0",
  336. "suggest-diff" : "0"
  337. }
  338. EOF
  339. cp /tmp/cgminer.conf /home/wareck/.cgminer/
  340. echo "Done."
  341. cd /home/wareck/miners
  342. echo -e "$(tput setaf 10)\nBuild Cgminer-lketc:$(tput sgr0)"
  343. cd cgminer-lketc
  344. CFLAGS="-O2 -march=native" ./autogen.sh
  345. ./configure
  346. make -j$((`nproc`+1))
  347. cd ..
  348. echo "Done."
  349. echo -e "$(tput setaf 10)\nUncompress xmr files:$(tput sgr0)"
  350. tar xfJ /home/wareck/xmrig.tar.xz --checkpoint=.100
  351. echo "Done."
  352. echo -n -e "\n"
  353. echo -e "$(tput setaf 10)\nBuild xmrig:$(tput sgr0)"
  354. cd xmrig
  355. git config --global --add safe.directory /home/wareck/miners/xmrig
  356. git pull
  357. sed -i "s/kDefaultDonateLevel = 5;/kDefaultDonateLevel = 0;/g" src/donate.h
  358. sed -i "s/kMinimumDonateLevel = 1;/kMinimumDonateLevel = 0;/g" src/donate.h
  359. wget -c https://download.open-mpi.org/release/hwloc/v2.7/hwloc-2.7.1.tar.bz2
  360. tar xfj hwloc-2.7.1.tar.bz2 --checkpoint=.100
  361. cd hwloc-2.7.1
  362. ./configure
  363. make -j$((`nproc`+1))
  364. sudo make install
  365. cd ..
  366. sudo ldconfig
  367. cd build
  368. cmake ..
  369. make -j$((`nproc`+1))
  370. cd ..
  371. cd ..
  372. echo "Done."
  373. #echo -e "$(tput setaf 10)\nBuild xmrig-upx:$(tput sgr0)"
  374. #cd xmrig-upx
  375. #git config --global --add safe.directory /home/wareck/miners/xmrig-upx
  376. #git pull
  377. #sed -i "s/kDefaultDonateLevel = 5;/kDefaultDonateLevel = 0;/g" src/donate.h
  378. #sed -i "s/kMinimumDonateLevel = 1;/kMinimumDonateLevel = 0;/g" src/donate.h
  379. #cd build
  380. #cmake .. -DWITH_HTTPD=OFF
  381. #make -j$((`nproc`+1))
  382. #cd ..
  383. #cd ..
  384. #echo "Done."
  385. rm -r -f xmrig-upx
  386. echo -e "$(tput setaf 10)\nBuild xmr-stak-rx:$(tput sgr0)"
  387. cd xmr-stak-rx
  388. git config --global --add safe.directory /home/wareck/miners/xmr-stak-rx
  389. git pull
  390. cd build
  391. cmake ..
  392. make -j$((`nproc`+1))
  393. cd ..
  394. cd ..
  395. echo "Done."
  396. echo -e "$(tput setaf 10)\nBuild xmr-stak:$(tput sgr0)"
  397. cd xmr-stak
  398. if ! [ -d build ];then mkdir build ;fi
  399. git config --global --add safe.directory /home/wareck/miners/xmr-stak
  400. git pull
  401. cd build
  402. cmake .. -DOpenCL_ENABLE=OFF -DCUDA_ENABLE=OFF
  403. make -j$((`nproc`+1))
  404. cd ..
  405. cd ..
  406. echo "Done."
  407. if [ $Cuda = "YES" ]
  408. then
  409. echo -e "$(tput setaf 10)\nBuild xmrig-cuda:$(tput sgr0)"
  410. git clone https://github.com/xmrig/xmrig-nvidia.git
  411. cd xmrig-nvidia
  412. mkdir build
  413. cd build
  414. cmake .. -DCMAKE_C_COMPILER=$(which gcc-8) -DCMAKE_CXX_COMPILER=$(which g++-8)
  415. make -j$((`nproc`+1))
  416. fi
  417. echo "Done"
  418. touch /home/wareck/.pass3
  419. fi
  420. sudo chmod -R 775 /home/wareck/miners
  421. }
  422. function configure_ {
  423. if [ ! -f /home/wareck/.pass4 ]
  424. then
  425. echo -e "$(tput setaf 10)\nlxPanel sensors:$(tput sgr0)"
  426. cd /home/wareck
  427. if ! [ -d sensors-lxpanel-plugin ]
  428. then
  429. git clone https://github.com/danamlund/sensors-lxpanel-plugin.git
  430. fi
  431. cd /home/wareck
  432. cd sensors-lxpanel-plugin
  433. make
  434. sudo make install
  435. sudo rm -r /home/wareck/sensors-lxpanel-plugin
  436. echo "Done."
  437. echo -e "$(tput setaf 10)\nConfig files:$(tput sgr0)"
  438. cd /home/wareck/
  439. zip="['firefox.desktop', 'thunderbird.desktop', 'org.remmina.Remmina.desktop', 'filezilla.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Terminal.desktop']"
  440. cat <<'EOF'>> zap
  441. #!/bin/bash
  442. gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 32
  443. gsettings set org.gnome.desktop.background picture-uri /home/wareck/Images/mr-robot-wallpapers.jpg
  444. gsettings set org.gnome.shell favorite-apps "XXX"
  445. #su wareck -c 'gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false'
  446. dconf load /org/gnome/terminal/ < /usr/local/bin/zap2
  447. EOF
  448. sed -i "s/XXX/$zip/g" zap
  449. UUID=$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')
  450. cat <<'EOF'>> zap2
  451. [legacy/profiles:/:XXX]
  452. default-size-columns=110
  453. font='Monospace 9'
  454. use-system-font=false
  455. use-theme-colors=false
  456. EOF
  457. sed -i "s/XXX/$UUID/g" zap2
  458. chmod +x zap
  459. sudo cp zap /usr/local/bin
  460. sudo cp zap2 /usr/local/bin
  461. sudo rm zap
  462. sudo rm zap2
  463. sleep 1
  464. sudo rm -r -f /etc/update-motd.d/*
  465. tar xfJ pack1.tar.xz --checkpoint=.10
  466. echo -n -e "\n"
  467. sudo cp /home/wareck/pack2.tar.xz /
  468. sudo cp /home/wareck/pack3.tar.xz /
  469. cd /
  470. sudo tar xfJ pack2.tar.xz --checkpoint=.10
  471. sudo tar xfJ pack3.tar.xz --checkpoint=.10
  472. echo -n -e "\n"
  473. cd /home/wareck
  474. #clear
  475. dynmotd
  476. sudo sed -i -e "s/# set constantshow/set constantshow/g" /etc/nanorc
  477. if ! grep "wareck" /etc/sudoers >/dev/null
  478. then
  479. sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
  480. fi
  481. echo -e "$(tput setaf 10)\nBuild folder and mount drives:$(tput sgr0)"
  482. #if ! [ -r /media/Exos ];then sudo mkdir /media/Exos && cd / & sudo ln -s /media/Exos /Exos ;fi
  483. if ! [ -r /media/Cloud ];then sudo mkdir /media/Cloud && cd / & sudo ln -s /media/Cloud /Cloud ;fi
  484. if ! [ -r /media/Store ];then sudo mkdir /media/Store && cd / & sudo ln -s /media/Store /Store;fi
  485. if ! [ -r /media/Partage ];then sudo mkdir /media/Partage && cd / & sudo ln -s /media/Partage /Partage;fi
  486. if ! [ -r /media/Nas ];then sudo mkdir /media/Nas && cd / & sudo ln -s /media/Nas /Nas;fi
  487. if ! [ -r /media/nvme0 ];then sudo mkdir /media/nvme0 && cd / & sudo ln -s /media/nvme0 /nvme0 ;fi
  488. if ! [ -r /media/nvme1 ];then sudo mkdir /media/nvme1 && cd / & sudo ln -s /media/nvme1 /nvme1 ;fi
  489. if ! [ -r /farm ];then sudo mkdir /farm;fi
  490. if ! [ -r /farm/farm0 ];then sudo mkdir /farm/farm0;fi
  491. if ! [ -r /farm/farm1 ];then sudo mkdir /farm/farm1;fi
  492. if ! [ -r /farm/farm2 ];then sudo mkdir /farm/farm2;fi
  493. if ! [ -r /farm/farm3 ];then sudo mkdir /farm/farm3;fi
  494. if ! [ -r /farm/farm4 ];then sudo mkdir /farm/farm4;fi
  495. if ! grep "UUID=1df72b63-fca0-45c6-992c-3e2532d5591a /media/Store ext4" /etc/fstab >/dev/null
  496. then
  497. cp /etc/fstab /tmp/fstab
  498. cat <<"EOF">> /tmp/fstab
  499. #ext4
  500. UUID=6fc06d70-1a38-4706-ae83-0a329181b9f7 /media/Cloud ext4 auto,nofail,noatime,rw,user 0 0
  501. UUID=a111c12b-d1b4-441a-9352-b6bbc558184e /media/Partage ext4 auto,nofail,noatime,rw,user 0 0
  502. UUID=1df72b63-fca0-45c6-992c-3e2532d5591a /media/Store ext4 auto,nofail,noatime,rw,user 0 0
  503. #btrfs temporary drives
  504. #UUID=98f4077f-36da-42de-b322-8c58aec550a7 /nvme0 btrfs ssd,nodatasum,nobarrier,nodatacow,discard=async,noatime
  505. #UUID=1181ac83-b8c5-404a-97fa-b23ceb1addc5 /nvme1 btrfs ssd,nodatasum,nobarrier,nodatacow,discard=async,noatime
  506. /dev/md0 /nvme0 ext4 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  507. #/dev/plant/fast /nvme0 btrfs ssd,nodatasum,nobarrier,nodatacow,discard=async,noatime
  508. #Chia drive
  509. UUID=77a593df-1bdb-4012-8c9e-ce50864b464d /farm/farm0 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  510. UUID=0d145a5a-50b0-456c-8998-549def2f9fc9 /farm/farm1 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  511. UUID=b99c7fa3-827c-4c09-a625-a72aec6c9395 /farm/farm2 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  512. UUID=e583a1e4-f8c8-4c2b-a427-cee854e0b56d /farm/farm3 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  513. UUID=d24c7616-91c2-434c-b21e-8dd70d794e25 /farm/farm4 ext4 auto,nofail,noatime,nodiratime,rw,user 0 0
  514. EOF
  515. sudo cp /tmp/fstab /etc/fstab
  516. fi
  517. sudo rm /etc/hosts
  518. sudo cat <<'EOF'>> /etc/hosts
  519. 127.0.0.1 localhost
  520. 127.0.1.1 cube
  521. 192.168.1.8 miniserver miniserver gogserver.dnsalias.com
  522. 192.168.1.10 nzxt
  523. 192.168.1.11 garage
  524. 192.168.1.12 blade
  525. 192.168.1.254 mafreebox.freebox.fr
  526. 192.168.1.200 node
  527. # The following lines are desirable for IPv6 capable hosts
  528. ::1 ip6-localhost ip6-loopback
  529. fe00::0 ip6-localnet
  530. ff00::0 ip6-mcastprefix
  531. ff02::1 ip6-allnodes
  532. ff02::2 ip6-allrouters
  533. EOF
  534. echo "Done."
  535. echo -e "$(tput setaf 10)\nSensors drivers:$(tput sgr0)"
  536. if ! grep "it87" /etc/modules >/dev/null
  537. then
  538. cp /etc/modules /tmp/modules
  539. cat <<"EOF">> /tmp/modules
  540. # Chip drivers
  541. it87
  542. EOF
  543. sudo cp /tmp/modules /etc/modules
  544. fi
  545. if [ -f /tmp/sensors3.conf ]
  546. then
  547. chmod 777 /tmp/sensors3.conf
  548. rm /tmp/sensors3.conf
  549. fi
  550. cat <<'EOF'>> /tmp/sensors3.conf
  551. chip "it8728-isa-0228"
  552. label in0 "Vcore"
  553. label in1 "Vdram" # "DDR3" in BIOS
  554. label in2 "+3.3V"
  555. label in3 "+5V" # Not in BIOS
  556. label in4 "+12V"
  557. ignore in5 # -12V unused
  558. ignore in6
  559. label in7 "5VSB" # Not in BIOS
  560. label in8 "Vbat" # Not in BIOS
  561. compute in3 @ * (6.8/10+1), @ / (6.8/10+1)
  562. compute in4 @ * 3.963, @ / 3.963
  563. compute in7 @ * (6.8/10+1), @ / (6.8/10+1)
  564. set in0_min 0.825 * 0.95
  565. set in0_max 1.425 * 1.05
  566. set in1_min 1.5 * 0.95
  567. set in1_max 1.5 * 1.05
  568. set in2_min 3.3 * 0.95
  569. set in2_max 3.3 * 1.05
  570. set in3_min 5 * 0.95
  571. set in3_max 5 * 1.05
  572. set in4_min 12 * 0.95
  573. set in4_max 12 * 1.05
  574. set in7_min 5 * 0.95
  575. set in7_max 5 * 1.05
  576. ignore cpu0_vid
  577. set fan4_min 100
  578. set fan1_min 100
  579. ignore fan2
  580. ignore fan3
  581. ignore fan5
  582. ignore in8
  583. ignore intrusion0
  584. label fan1 "fan1"
  585. label fan4 "fan2"
  586. label temp1 "MB"
  587. label temp2 "CPU"
  588. set temp2_min 0
  589. set temp2_max 75
  590. set temp1_min 0
  591. set temp1_max 90
  592. set temp1_beep 0.0
  593. label temp1 "VRM Temp"
  594. set temp1_min 0
  595. set temp1_max 65
  596. label temp2 "SB Temp"
  597. label temp3 "CPU Temp"
  598. set temp3_min 0
  599. set temp3_max 65
  600. chip "nvme-pci-0400"
  601. set temp2_max 75
  602. set temp2_min 20
  603. set temp3_max 75
  604. set temp3_min 20
  605. EOF
  606. chmod 644 /tmp/sensors3.conf
  607. sudo cp /tmp/sensors3.conf /etc/
  608. sudo sensors -s
  609. sensors
  610. sudo apt install ethtool -y
  611. iface=$(ip link | awk -F: '$0 !~ "lo|vir|^[^0-9]"{print $2a;getline}')
  612. sudo ethtool --change $iface wol g
  613. cat <<'EOF'>> /tmp/wakemeup.sh
  614. #!/bin/bash
  615. set -e
  616. if ! [ -x "$(command -v etherwake)" ];then sudo apt-get install etherwake -y;fi
  617. clear
  618. echo -e "$(tput setaf 10)Wake On Lan v1.0:$(tput sgr0)"
  619. PS3="Select : "
  620. items=("Nzxt" "Garage" "Blade")
  621. select item in "${items[@]}" Quit
  622. do
  623. case $REPLY in
  624. 1) sudo etherwake -i enp5s0 E0:D5:5E:2D:9E:CB ; break;;
  625. 2) sudo etherwake -i enp5s0 58:11:22:CD:FC:7A ; break;;
  626. 3) sudo etherwake -i enp5s0 78:AC:44:57:3C:50 ; break;;
  627. $((${#items[@]}+1))) echo "We're done!"; break 2;;
  628. *) echo "Ooops - unknown choice $REPLY"; break;
  629. esac
  630. done
  631. echo -e ""
  632. EOF
  633. sudo chmod +x /tmp/wakemeup.sh
  634. sudo cp /tmp/wakemeup.sh /usr/local/bin
  635. echo "Done."
  636. echo -e "$(tput setaf 10)\nVnc init:$(tput sgr0)"
  637. sudo update-rc.d vncserver defaults
  638. echo "Done."
  639. echo -e "$(tput setaf 10)\nOpening ports:$(tput sgr0)"
  640. sudo ufw allow 8333 >/dev/null
  641. sudo ufw allow 22 >/dev/null
  642. sudo ufw allow 5900 >/dev/null
  643. sudo ufw allow 10000 >/dev/null
  644. sudo ufw allow 139 >/dev/null
  645. sudo ufw allow 5901 >/dev/null
  646. sudo ufw allow 5902 >/dev/null
  647. sudo ufw allow 445 >/dev/null
  648. echo "Done."
  649. echo -e "$(tput setaf 10)\nBashrc mod:$(tput sgr0)"
  650. if [ $Cuda = "YES" ]
  651. then
  652. if ! grep "#mod for cuda" /home/wareck/.bashrc >/dev/null
  653. then
  654. echo '#mod for cuda' >>/home/wareck/.bashrc
  655. echo 'export PATH=/usr/local/cuda-12.2/bin/:$PATH'>>/home/wareck/.bashrc
  656. echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH'>>/home/wareck/.bashrc
  657. echo '' >>/home/wareck/.bashrc
  658. fi
  659. fi
  660. if ! grep "#mod for tightvncserver" /home/wareck/.bashrc >/dev/null
  661. then
  662. echo '#mod for tightvncserver' >>/home/wareck/.bashrc
  663. echo 'cd ~' >>/home/wareck/.bashrc
  664. fi
  665. echo "Done."
  666. echo -e "$(tput setaf 10)\nDisable IPv6:$(tput sgr0)"
  667. if ! grep "ipv6.disable=1" /etc/default/grub >/dev/null
  668. then
  669. sed -i -e "s/quiet splash/quiet splash ipv6.disable=1/g" /etc/default/grub
  670. sed -i -e "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"ipv6.disable=1 acpi_enforce_resources=lax/g" /etc/default/grub
  671. sudo update-grub2
  672. fi
  673. sudo chown -R wareck:wareck /home/wareck/miners/xmr*
  674. sudo chown -R wareck:wareck /home/wareck/miners/cgminer*
  675. sudo apt-get remove light-locker* -y
  676. if [ ! -d /home/wareck/.config/lxpanel/LXDE/panels ]
  677. then
  678. mkdir /home/wareck/.config/lxpanel
  679. mkdir /home/wareck/.config/lxpanel/LXDE
  680. mkdir /home/wareck/.config/lxpanel/LXDE/panels
  681. fi
  682. sudo cp /home/wareck/Build_Cube/pack/panel /home/wareck/.config/lxpanel/LXDE/panels/panel
  683. sudo chmod 777 /home/wareck/.config/lxpanel/LXDE/panels/panel
  684. if [ ! -d /home/wareck/.config/lxterminal ]
  685. then
  686. mkdir /home/wareck/.config/lxterminal
  687. fi
  688. sudo cp /home/wareck/Build_Cube/pack/lxterminal.conf /home/wareck/.config/lxterminal/
  689. sudo chmod 777 /home/wareck/.config/lxterminal/lxterminal.conf
  690. echo "Done."
  691. touch /home/wareck/.pass4
  692. decompte_
  693. fi
  694. }
  695. function printer_ {
  696. if [ ! -f /home/wareck/.pass3 ]
  697. then
  698. if [ ! -d /usr/local/share/foomatic/ ]
  699. then
  700. if [ ! -d /tmp/foomatic-db/ ]
  701. then
  702. cd /tmp/
  703. echo -e "$(tput setaf 10)\nInstall printers generic drivers:$(tput sgr0)"
  704. git clone https://github.com/OpenPrinting/foomatic-db.git
  705. fi
  706. cd /tmp/foomatic-db
  707. if [ ! -d /usr/local/share/foomatic/ ]
  708. then
  709. ./make_configure
  710. ./configure
  711. sudo make install
  712. echo "Done."
  713. fi
  714. fi
  715. fi
  716. }
  717. function mounting_drives_ {
  718. if [ ! -f /home/wareck/.pass4 ]
  719. then
  720. echo -e "$(tput setaf 10)\nMounting Drives$(tput sgr0)"
  721. if ! findmnt /media/Partage >/dev/null ; then sudo mount /media/Partage ;fi
  722. if ! findmnt /media/Store >/dev/null ; then sudo mount /media/Store ;fi
  723. if ! findmnt /media/Cloud >/dev/null ; then sudo mount /media/Cloud ;fi
  724. sudo chmod 777 /media/Store
  725. sudo chmod 777 /media/Cloud
  726. sudo chmod 777 /media/Partage
  727. sudo chmod 777 /media/nvme0
  728. sudo chmod 777 /media/nvme1
  729. sudo chmod 777 /media/Nas
  730. echo "Done."
  731. fi
  732. }
  733. function cleaning_ {
  734. if [ -f /home/wareck/.pass4 ]
  735. then
  736. echo -e "$(tput setaf 10)\nCleaning install files:$(tput sgr0)"
  737. if [ -f /pack2.tar.xz ]; then sudo rm /pack2.tar.xz ;fi
  738. if [ -f /pack3.tar.xz ]; then sudo rm /pack3.tar.xz ;fi
  739. if [ -f /home/wareck/pack1.tar.xz ]; then rm /home/wareck/pack1.tar.xz ;fi
  740. if [ -f /home/wareck/pack2.tar.xz ]; then rm /home/wareck/pack2.tar.xz ;fi
  741. if [ -f /home/wareck/pack3.tar.xz ]; then rm /home/wareck/pack3.tar.xz ;fi
  742. if [ -f /home/wareck/xmrig.tar.xz ]; then rm /home/wareck/xmrig.tar.xz ;fi
  743. if [ -f /home/wareck/gpu-miners.tar.xz ]; then rm /home/wareck/gpu-miners.tar.xz;fi
  744. if [ -r /home/wareck/Music ]; then sudo rm -r -f /home/wareck/Music ;fi
  745. if [ -r /home/wareck/Public ]; then sudo rm -r -f /home/wareck/Public ;fi
  746. if [ -r /home/wareck/Templates ]; then sudo rm -r -f /home/wareck/Templates ;fi
  747. if [ -r /home/wareck/Vidéos ]; then sudo rm -r -f /home/wareck/Vidéos ;fi
  748. if [ -f /home/wareck/NVIDIA-Linux-x86_64-470.74.run ]; then rm /home/wareck/NVIDIA-Linux-x86_64-470.74.run ;fi
  749. 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
  750. if [ -f /home/wareck/.pass1 ]; then rm /home/wareck/.pass1 ;fi
  751. if [ -f /home/wareck/.pass2 ]; then rm /home/wareck/.pass2 ;fi
  752. if [ -f /home/wareck/.pass3 ]; then rm /home/wareck/.pass3 ;fi
  753. if [ -f /home/wareck/.pass4 ]; then rm /home/wareck/.pass4 ;fi
  754. if [ -f /usr/local/bin/zap ]; then sudo rm /usr/local/bin/zap* ;fi
  755. if [ -f /home/wareck/.config/autostart/install_os.desktop ];then sudo rm /home/wareck/.config/autostart/install_os.desktop;fi
  756. if [ -f /home/wareck/.config/autostart/zappy.desktop ];then sudo rm /home/wareck/.config/autostart/zappy.desktop;fi
  757. if [ -r /lib/modules/5.15.0-60-generic ]; then sudo rm -r /lib/modules/5.15.0-60-generic ;fi
  758. if [ -r /lib/modules/5.15.0-46-generic ]; then sudo rm -r /lib/modules/5.15.0-46-generic ;fi
  759. if [ -r /lib/modules/5.15.0-70-generic ]; then sudo rm -r /lib/modules/5.15.0-70-generic ;fi
  760. cd /home/wareck/Build_Cube/pack
  761. sudo chown -R wareck:wareck /home/wareck/miners
  762. sudo chmod -R 775 /home/wareck/miners
  763. ./clean.sh
  764. echo -e "Done. \n"
  765. echo `date` "install/update" >/home/wareck/.buildcube
  766. fi
  767. sudo apt-get autoremove -y
  768. sleep 1
  769. }
  770. function autoroot_ {
  771. if [ ! -d /home/wareck/.config/autostart ]
  772. then
  773. echo -e "$(tput setaf 10)\nInit install & autostart:$(tput sgr0)"
  774. mkdir /home/wareck/.config/autostart
  775. echo -e "Done."
  776. sleep 1
  777. fi
  778. if [ ! -f /home/wareck/.config/autostart/install_os.desktop ]
  779. then
  780. cat <<'EOF'>> /home/wareck/.config/autostart/install_os.desktop
  781. [Desktop Entry]
  782. # VERSION=3.36.2
  783. Name=Terminal
  784. Comment=Use the command line
  785. Keywords=shell;prompt;command;commandline;cmd;
  786. TryExec=gnome-terminal
  787. Exec=gnome-terminal -- bash -c "sudo /home/wareck/Build_Cube/build_cube.sh; exec bash"
  788. Icon=org.gnome.Terminal
  789. Type=Application
  790. Categories=GNOME;GTK;System;TerminalEmulator;
  791. StartupNotify=true
  792. X-GNOME-SingleWindow=false
  793. OnlyShowIn=GNOME;Unity;
  794. Actions=new-window;preferences;
  795. X-Ubuntu-Gettext-Domain=gnome-terminal
  796. [Desktop Action new-window]
  797. Name=New Window
  798. Exec=gnome-terminal --window
  799. [Desktop Action preferences]
  800. Name=Preferences
  801. Exec=gnome-terminal --preferences
  802. EOF
  803. chmod +x /home/wareck/.config/autostart/install_os.desktop
  804. fi
  805. if [ ! -f /home/wareck/.config/autostart/zappy.desktop ]
  806. then
  807. cat <<'EOF'>> /home/wareck/.config/autostart/zappy.desktop
  808. [Desktop Entry]
  809. # VERSION=3.36.2
  810. Name=Terminal
  811. Comment=Use the command line
  812. Keywords=shell;prompt;command;commandline;cmd;
  813. TryExec=gnome-terminal
  814. Exec=gnome-terminal -- bash -c "/usr/local/bin/zap"
  815. Icon=org.gnome.Terminal
  816. Type=Application
  817. Categories=GNOME;GTK;System;TerminalEmulator;
  818. StartupNotify=true
  819. X-GNOME-SingleWindow=false
  820. OnlyShowIn=GNOME;Unity;
  821. Actions=new-window;preferences;
  822. X-Ubuntu-Gettext-Domain=gnome-terminal
  823. [Desktop Action new-window]
  824. Name=New Window
  825. Exec=gnome-terminal --window
  826. [Desktop Action preferences]
  827. Name=Preferences
  828. Exec=gnome-terminal --preferences
  829. EOF
  830. chmod +x /home/wareck/.config/autostart/zappy.desktop
  831. fi
  832. if ! grep "wareck" /etc/sudoers >/dev/null
  833. then
  834. sudo sh -c "echo \"wareck ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
  835. fi
  836. echo -e "$(tput setaf 10)\nUpdate and install packages:$(tput sgr0)"
  837. sudo apt-get update
  838. sudo apt-get install lxde lxde-icon-theme -y
  839. sleep 1
  840. }
  841. function remove_screensaver {
  842. #remove screensaver
  843. cat <<EOF>> autostart
  844. @lxpanel --profile LXDE
  845. @pcmanfm --desktop --profile LXDE
  846. EOF
  847. sudo chmod 744 autostart
  848. sudo cp autostart /etc/xdg/lxsession/LXDE/
  849. sudo cp autostart /home/wareck/.config/lxsession/LXDE/
  850. sudo rm autostart
  851. sudo apt-get remove xscreensaver xscreensaver-data -y
  852. }
  853. function cmake_ {
  854. pids=""
  855. /home/wareck/Build_Cube/options/tools/_cmake.sh rollback & pids="$pids $!"
  856. wait $pids
  857. sudo ldconfig
  858. }
  859. function watchdog_ {
  860. pids=""
  861. /home/wareck/Build_Cube/options/watchdog.sh ext & pids="$pids $!"
  862. wait $pids
  863. }
  864. function wol_ {
  865. iface=$(ip link | awk -F: '$0 !~ "lo|vir|^[^0-9]"{print $2a;getline}')
  866. ether=$(which ethtool)
  867. echo "[Unit]" >>/tmp/wol.service
  868. echo "Description=Enable Wake On Lan" >>/tmp/wol.service
  869. echo "" >>/tmp/wol.service
  870. echo "[Service]" >>/tmp/wol.service
  871. echo "Type=oneshot" >>/tmp/wol.service
  872. echo "ExecStart = $ether --change$iface wol g" >>/tmp/wol.service
  873. echo "" >>/tmp/wol.service
  874. echo "[Install]" >>/tmp/wol.service
  875. echo "WantedBy=basic.target" >>/tmp/wol.service
  876. sudo cp /tmp/wol.service /etc/systemd/system/wol.service
  877. sudo systemctl daemon-reload
  878. sudo systemctl enable wol.service
  879. sudo systemctl start wol.service
  880. }
  881. intro_
  882. watchdog_
  883. autoroot_
  884. ubuntu_version_check
  885. update_
  886. kernel_check_
  887. autoroot_
  888. nvidia_driver_
  889. update_
  890. download_packs_
  891. printer_
  892. build_miners_
  893. configure_
  894. mounting_drives_
  895. cleaning_
  896. remove_screensaver
  897. clear
  898. wol_
  899. dynmotd
  900. echo -e "$(tput setaf 10)\nEnd of script:$(tput sgr0) \n"
  901. echo -e "$(tput setaf 7)Need to install webmin manually (reboot required)$(tput sgr0)"
  902. echo -e "$(tput setaf 7)after install webmin, reboot is required $(tput sgr0)"
  903. echo -e ""