build_cube.sh 27 KB

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