아래 내용은 제가 땡글에서 얻은 정보가 많으니 저도 뭔가 정보 공유 해야겠다는 의식이 생겨 올리는 겸, 제가 방법을 까먹게 될 상황을 대비해 작성했습니다.
1. 우분투 설치
땡글 내 우분투 교과서가 있습니다.
https://www.ddengle.com/board_FAQ/2395534
참조하시면 될것 같습니다.
(※ 아래 내용은 우분투18.04 x64, CUDA10.0, z-enemy를 기준으로 작성하였습니다.)
다만, intensity 20이상 먹일려면 swap 영역이 최소 SSD에 6웨이 10기가 이상, 12웨이 40기가 이상 필요합니다. 제가 테스트 했을때 6웨이 가상사용률 9기가, 12웨이 20기가였습니다.(-i 20)
※ 7way 이상은 UEFI로 설치해야합니다.
- GPT형식으로 우분투USB부팅 디스크 생성
- UEFI부팅
- 설치방법에서 something else(기타)
- 파티션 설정
1. 500MB이상의 EFI파티션 생성(Primary)(begin)
2. 충분한 공간의 swap파티션 생성(logical,논리 공간)(begin)
3. 우분투 설치공간 Ext4 / (Primary)(End)
continue -> 설치
2. Nvidia 드라이버, CUDA툴킷 다운로드
※ 윈도우 OS는 CUDA 툴킷을 설치하지 않습니다.
CUDA10 기준으로 작성합니다.
z-enemy가 무슨 이유인지는 몰라도 CUDA 컴파일을 안 해놔서 이용자가 직접 쿠다를 설치하고 경로 설정을 해줘야 합니다.
비코톡에 올라온 z-enemy thread에 의하면 CUDA10.0이 가장 좋은 퍼포먼스를 낸다고 합니다.(물론 비교 테스트는 안해봤으니 그냥 개발자 말 믿고 쿠다10으로 갑니다.)
일단 지포스 10시리즈(또는 이후)는 CUDA10 지원 가능합니다.
다만 공식 레포지터리에 있는 드라이버 버전(396 추정)은 CUDA 9.2까지만 지원되기 때문에 엔비디아 공식홈페이지에 있는 드라이버(410+)를 다운받아야 합니다. 만,
안타깝게도 10시리즈 리눅스버전의 엔비디아 드라이버는 베타버전 밖에 없습니다.
제가 현재까지 테스트해본 결과 410.57(베타)버전으로 문제없이 돌리고 있습니다.
(※ CUDA10 툴킷에 포함된 410.48버전은 설치하면 안됩니다.)
쿠다10툴킷에 포함된 알수없는 410.48버전을 설치할 경우 특정 알고리즘에서 오류가 발생합니다.
(x16r 알고리즘은 경우의 수가 16^16, 약 1844경의 변수가 있기 때문에 이 중 어떤 알고리즘에서 오류가 나는지 발견하는 것은 우주공간에서 바늘찾기 입니다.)
- 엔비디아 공식홈페이지에서 410.57 linux 드라이버를 다운받습니다.
~/Downloads $ ls
NVIDIA-Linux-x86_64-410.57.run
아직 설치하지 않습니다.
다음으로 쿠다 툴킷을 다운받습니다. - 엔비디아 공식홈피 개발자 -> CUDA
Linux -> x86_64 -> Ubuntu -> 18.04 -> runfile(local)
반드시 runfile(local)로 다운 받아야 합니다. 그래야 엔비디아 드라이버만 제외하고 툴킷을 설치할 수 있습니다.
(※ CUDA9.2의 경우 우분투17.10버전으로 다운받습니다.18.04 호환가능합니다. gpu메모리가 3g 이하면 CUDA10에서 작동 멈춥니다. 9.2패치파일도 다운받습니다.)
여기까지 다운만 받아 놓고 다음으로 넘어갑니다.
3. nouveau 비활성
run파일로 그래픽 드라이버를 설치하면 nvidia 연결시 자동 설치되는 nouveau때문에 충돌이 일어납니다. 그러니 nouveau를 비활성화 해줍니다.(자세한 방법은 엔비디아 Documentation에 나와있습니다.)
$ 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"
$ cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
blacklist nouveau
options nouveau modeset=0
$ sudo update-initramfs -u
$ sudo reboot
4. Nvidia 드라이버 설치
해상도가 낮아 화면 보는게 힘들지만 설치하는데는 문제 없습니다.
터미널을 열고 뭔지는 모르지만 구글에서 찾은 명령어를 입력하고 설치해 줍니다.
이 부분은 nouveau 비활성화 하기 전 (쾌적한 해상도)에 하서도 됩니다.
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install build-essential libc6:i386
이후로는 반드시 nouveau가 비활성화 되어 있어야 합니다.
다시 터미널을 열고 엔비디아 드라이버가 있는 곳으로 이동합니다. 그리고 설치.
$ sudo sh NVIDIA-Linux-x86_64-410.57.run #이 부분은 드라이버 버전마다 다릅니다.
run파일을 실행하면 고맙게도 kernel 모듈을 알아서 설치해 주고 제가 알 수 없는 기타 잡다한 lib도 설치해줍니다.
설치가 완료되면
$ reboot
# 드라이버 삭제할때는 $ sudo sh NVIDIA-Linux-x86_64-410.57.run --uninstall
이제 쿠다 툴킷을 설치해 줍니다.
다시 터미널을 열고 CUDA툴킷을 다운받은 경로로 이동합니다. 그리고 설치
$ sudo sh cuda_10.0.130_410.48_linux.run #이 부분도 마찬가지로 CUDA 버전마다 다릅니다.
(※ 이 내용은 CUDA 10 기준입니다. 9.2 또는 그 이하 버전은 다른방법을 이용해야합니다만 지금은 의미 없어 생략합니다.)
EULA를 엔터 누른상태로 전부 지나쳐주고 accept하면
가장 중요한부분이 나옵니다.
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
위 선택지에서 반드시 "n"을 선택해야합니다.(나머진 "y") 안그럼 기존에 설치한 드라이버가 지워지고 정체를 알 수 없는 410.48버전이 설치됩니다.(그럼 삭제하고 처음부터 다시해야 합니다.)
또한 CUDA toolkit 경로 설정하는 부분이 나오는데 default 상태로 하는걸 무조건 권장합니다.(그래야 PATH설정 가능)
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: #그냥 엔터 강하게 쳐줍니다.
(※ CUDA9.2의 경우 [ default is /usr/local/cuda-9.2 ]가 디폴트 상태입니다. CUDA10과 겹쳐서는 안됩니다.)
그 후 symbolic이나 sample은 설치 하셔도 되고 안 하셔도 됩니다.
목적은 410.48드라이버를 설치하지 않고 꼭 필요한 CUDA toolkit을 설치하는 것입니다.
(CUDA9.2는 패치파일도 설치합니다.)
그리고 $ reboot
# CUDA10.0 toolkit 삭제하는 방법 $ sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
# CUDA9.2 toolkit 삭제하는 방법 $ sudo /usr/local/cuda-9.2/bin/uninstall_cuda_9.2.pl
5. 마이너 실행
z-enemy를 실행하기 위해 위의 알 수없는 행동을 취했으니 마이너 돌릴 일만 남았습니다.
https://bitcointalk.org/index.php?topic=3378390.0
여기서 가장 최신버전 1.22버전 CUDA10을 다운받습니다.(링크가 이상하게 적혀있어서 드래그 후 복붙하고 접속합니다.)
그리고 압축을 풉니다.
$ tar -xvzf z-enemy 어쩌구저쩌구
z-enemy 마이너가 있는 경로에 스크립트 파일 생성합니다.
$ nano
./z-enemy -r 0 -a x16r -o 주소:포트 -u 유저네임.<option워커네임> -p <option> -i 20
Ctrl + X -> y -> x16r.sh
그리고 스크립트를 실행합니다.
$ sh x16r.sh
그럼 오류가 나옵니다.
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found
libcurl3 이 뭐하는 장치인지는 몰라도 에너미가 원하니 따지지 않고 설치해 줍니다.
$ sudo apt install libcurl3
libcurl3과 libcurl4는 동시에 사용할 수 없고 18.04는 libcurl4가 기본으로 설치되어 있기 때문에 3으로 바꿔줍니다. 채굴용으로 사용할 거라 문제 없습니다.
그 후 실행
$ sh x16r.sh
그럼 또 오류가 나옵니다.
error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory
왜 그런지 알 수 없지만 에너미 개발팀이 쿠다 컴파일을 안 해주신 덕분에 사용자가 임의로 쿠다 경로 설정을 해줘야 합니다.
아래 내용을 nano편집기로 작성한 후 저장해 줍니다.(엔비디아 doc에 자세한 방법이 나왔으나 복잡하고 번거로워 아래 방법을 사용합니다.)
저는 파일명을 cuda10.0-env로 했습니다.(cuda10, 64비트 기준)
(※CUDA9.2의 경우 저는 파일명을 cuda9.2-env로 했습니다.)
$ nano
#CUDA 10.0의 경우
export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDADIR=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
Ctrl + X -> y -> cuda10.0-env
#CUDA 9.2의 경우
export PATH=$PATH:/usr/local/cuda-9.2/bin
export CUDADIR=/usr/local/cuda-9.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.2/lib64
Ctrl + X -> y -> cuda9.2-env
그리고 위 파일로 PATH 설정을 해줍니다.
$ source cuda10.0-env
(※CUDA9.2의 경우 $source cuda9.2-env)
PATH 설정은 새로운 터미널을 열때마다 해줘야합니다.(또는 마이너 스크립트에 심어도 됩니다.)
(※ CUDA10.0과 CUDA9.2 둘 다 설치해서 위 파일 두개로 혼용 가능합니다.)
그리고 마이너를 실행합니다.
$ sh x16r.sh
채굴 시작합니다.
- GPU 메모리 3g 이하로 CUDA10 작동 멈추는거 확인했습니다. CUDA9.2로 정상작동합니다.
직접 확인해보니 우분투로 3기가 GPU도 CUDA10.0 잘 돌아갑니다...
- 일부 Yiimp 형식의 풀에서는 stratum interrupt가 발생합니다. nomp 풀에서 채굴하는 것을 권장합니다.
z-enemy 1.23부터는 stratum interrupt 없어졌습니다.
...동일 장비로 테스트해 보니 윈도우 해시가 5%정도 더 잘나오네요....
- 리눅스 GPU드라이버 415.XX 이후로 윈도우 대비 해시차이 3% 정도로 격차가 줄었습니다.