208 lines
6.3 KiB
YAML

---
# Install OpenCL drivers.
## Step 0/3: Dependencies ##
- name: Miner | Driver | AMDGPU | Variables
set_fact:
amdgpu_cron_job: AMDGPU - Need To Finish Installation
amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh"
- name: Miner | Driver | AMDGPU | Install Dependencies
package:
name:
- dkms
- mesa-common-dev
- clinfo
state: present
- name: Miner | Driver | AMDGPU | Set GRUB Timer
lineinfile:
path: /etc/default/grub
regexp: '^GRUB_TIMEOUT='
line: 'GRUB_TIMEOUT=3'
state: present
backup: yes
- name: Miner | Driver | AMDGPU | Remove Previous Run's Cron Job
cron:
user: root
name: "{{ amdgpu_cron_job }}"
state: absent
# Tests
- name: Miner | Driver | AMDGPU | Check If GA Kernel Installed
shell: 'uname --kernel-release | grep 5.4.0-65-generic'
register: ga_kernel
ignore_errors: yes
- name: Miner | Driver | AMDGPU | Check If HWE Kernel Installed
shell: 'apt search linux-image-5.8.0-* | grep -c installed'
register: hwe_kernel
ignore_errors: yes
#- name: Miner | Driver | AMDGPU | Check If All Driver Installed
# shell: 'which amdgpu-uninstall'
# register: amdgpu_install
# ignore_errors: yes
- name: Miner | Driver | AMDGPU | Check If Pro Driver Installed
shell: 'amdgpu-pro-uninstall -y'
register: amdgpu_install
ignore_errors: yes
- name: Miner | Driver | AMDGPU | DEBUG
debug:
var: "{{ item }}"
loop:
- ga_kernel
- hwe_kernel
- amdgpu_install
## Step 1/3: Get Correct Kernel ##
- name: Miner | Driver | AMDGPU | Install Recommended GA Kernel
shell: apt install --install-recommends linux-generic
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting
package:
name:
- linux-headers-5.4.0-65
- linux-headers-5.4.0-65-generic
- linux-headers-generic
- linux-image-generic
- linux-modules-extra-5.4.0-65-generic
state: present
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- name: Miner | Driver | AMDGPU | Prepare GRUB To Boot GA Kernel
lineinfile:
path: /etc/default/grub
regexp: '^GRUB_DEFAULT='
line: 'GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-65-generic"'
state: present
backup: yes
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- name: Miner | Driver | AMDGPU | Update GRUB
shell: update-grub
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
cron:
user: root
name: "{{ amdgpu_cron_job }}"
special_time: reboot
job: "{{ amdgpu_cron_cmd }}"
state: present
disabled: no
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- name: Miner | Driver | AMDGPU | Reboot To GA Kernel
shell: reboot
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
- pause:
prompt: "Rebooting to GA kernel! Please hold."
when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
## Step 2/3: Remove Incorrect Kernels ##
- name: Miner | Driver | AMDGPU | Remove Bad Kernels
shell: "apt remove --purge linux-generic-hwe-20.04 \
linux-oem-20.04 \
linux-hwe-* \
linux-oem-* \
linux-modules-5.1* \
linux-modules-5.8.0-* \
linux-modules-5.6.0-*"
when: amdgpu_install.failed and hwe_kernel.stdout != "0"
- name: Miner | Driver | AMDGPU | Update + Clean System
shell: "apt update; apt dist-upgrade -y; apt autoremove -y"
when: amdgpu_install.failed and hwe_kernel.stdout != "0"
# This is to ensure we can test adding `apt install --install-recommends linux-generic` later
- name: Miner | Driver | AMDGPU | Boot Default Kernel
lineinfile:
path: /etc/default/grub
regexp: '^GRUB_DEFAULT='
line: 'GRUB_DEFAULT=0'
state: present
backup: yes
when: amdgpu_install.failed and hwe_kernel.stdout != "0"
- name: Miner | Driver | AMDGPU | Update GRUB
shell: update-grub
when: amdgpu_install.failed and hwe_kernel.stdout != "0"
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
cron:
user: root
name: "{{ amdgpu_cron_job }}"
special_time: reboot
job: "{{ amdgpu_cron_cmd }}"
state: present
disabled: no
when: amdgpu_install.failed and hwe_kernel.stdout != "0"
# This reboot may not be necessary.
#- name: Miner | Driver | AMDGPU | Reboot To Ensure GA Is 0
# shell: reboot
# when: amdgpu_install.failed and hwe_kernel.stdout != "0"
#
#- pause:
# prompt: "Rebooting to clear kernels! Please hold."
# when: amdgpu_install.failed and hwe_kernel.stdout != "0"
## Step 3/3: Install AMD PRO Driver ##
- name: Miner | Driver | AMDGPU | Download Driver
shell: 'scp ling@leet:InstallFiles/Drivers/amdgpu-pro-20.45-1188099-ubuntu-20.04.tar.xz {{ root_home.stdout }}/Downloads/'
when: amdgpu_install.failed or "1" == "1"
- name: Miner | Driver | AMDGPU | Extract Tarball
shell: 'cd {{ root_home.stdout }}/Downloads; tar -xvf amdgpu-pro-20.45-1188099-ubuntu-20.04.tar.xz'
when: amdgpu_install.failed or "1" == "1"
## Only one driver set can exist at a time! ##
#- name: Miner | Driver | AMDGPU | Install AMDGPU All Driver
# shell: 'cd {{ root_home.stdout }}/Downloads/amdgpu-pro-20.45-1188099-ubuntu-20.04; ./amdgpu-install -y'
# when: amdgpu_install.failed
- name: Miner | Driver | AMDGPU | Install AMDGPU-Pro Driver
shell: 'cd {{ root_home.stdout }}/Downloads/amdgpu-pro-20.45-1188099-ubuntu-20.04; ./amdgpu-pro-install -y --opencl=pal,legacy'
when: amdgpu_install.failed or "1" == "1"
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
cron:
user: root
name: "{{ amdgpu_cron_job }}"
special_time: reboot
job: "{{ amdgpu_cron_cmd }}"
state: present
disabled: no
when: amdgpu_install.failed
- name: Miner | Driver | AMDGPU | Reboot To GA Kernel
shell: reboot
when: amdgpu_install.failed
- pause:
prompt: "Rebooting to use driver! Please hold."
when: amdgpu_install.failed
## We're done! ##
- name: Miner | Driver | AMDGPU | Test Driver
shell: clinfo -l
register: clinfo
- name: Miner | Driver | AMDGPU | Test Results
debug:
var: clinfo
ignore_errors: yes