diff --git a/README.md b/README.md index 91ef888..49d5184 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ -__HASH__ Ripristino offline OpenCL + Vulkan — Orange Pi 5 Plus +# Ripristino offline OpenCL + Vulkan — Orange Pi 5 Plus ## Scopo Questa procedura ripristina la configurazione GPU funzionante utilizzando esclusivamente il backup: -__BT__ +` /root/mali-offline-backup/ -__BT__ +` oppure una copia dello stesso backup proveniente da USB, disco esterno o altro computer. La configurazione di riferimento è: -__BT__ +` Kernel Mali g21p0-01eac0 Firmware g21p0 Userspace Mali g24p0-00eac0 OpenCL 3.0 Vulkan 1.3.276 GPU Mali-G610 -__BT__ +` La procedura non modifica: @@ -28,7 +28,7 @@ La procedura non modifica: - U-Boot - partizioni di boot -__HASH__ Importante +# Importante Il backup contiene le librerie userspace Mali g24 già funzionanti e il firmware g21 compatibile con il kernel. @@ -36,11 +36,11 @@ Non utilizzare un firmware g24 al posto del firmware g21. --- -__HASH__ 1. Requisiti +# 1. Requisiti Il backup deve avere questa struttura: -__BT__ +` mali-offline-backup/ ├── firmware/ │ └── mali_csffw.bin @@ -71,124 +71,124 @@ mali-offline-backup/ ├── vulkan/ │ └── mali.json └── checksums.sha256 -__BT__ +` --- -__HASH__ 2. Posizione del backup +# 2. Posizione del backup Se il backup è già presente: -__BT__ +` /root/mali-offline-backup -__BT__ +` impostare: -__BT__ +` BACKUP=/root/mali-offline-backup -__BT__ +` Se il backup è stato copiato da USB in un'altra posizione, modificare BACKUP di conseguenza. Esempio: -__BT__ +` BACKUP=/media/orangepi/USB/mali-offline-backup -__BT__ +` Controllare: -__BT__ -sudo find __BT__$BACKUP__BT__ -type f -printf '%P\n' | sort -__BT__ +` +sudo find `$BACKUP` -type f -printf '%P\n' | sort +` --- -__HASH__ 3. Verificare il backup prima di installarlo +# 3. Verificare il backup prima di installarlo -__BT__ +` sudo bash -c ' cd "$BACKUP" && sha256sum -c checksums.sha256 ' -__BT__ +` Tutti i file devono risultare: -__BT__ +` OK -__BT__ +` Se anche un solo file risulta FAILED: -__BT__ +` STOP -__BT__ +` Non procedere con il ripristino. --- -__HASH__ 4. Controllare il kernel Mali +# 4. Controllare il kernel Mali Prima di modificare qualsiasi file: -__BT__ +` uname -a -__BT__ +` Controllare il DDK Mali: -__BT__ +` dmesg | grep -E 'mali fb000000.gpu: (Kernel DDK|GPU identified|Probed as mali0)' -__BT__ +` Il kernel previsto deve utilizzare: -__BT__ +` g21p0-01eac0 -__BT__ +` -__HASH__ Non procedere se il kernel utilizza un DDK incompatibile senza prima verificare la compatibilità del firmware. +# Non procedere se il kernel utilizza un DDK incompatibile senza prima verificare la compatibilità del firmware. --- -__HASH__ 5. Disabilitare il servizio firmware automatico +# 5. Disabilitare il servizio firmware automatico Controllare: -__BT__ +` systemctl is-enabled set-mali-firmware.service -__BT__ +` Deve risultare: -__BT__ +` disabled -__BT__ +` Se necessario: -__BT__ +` sudo systemctl disable set-mali-firmware.service -__BT__ +` Non avviare il servizio durante il ripristino. --- -__HASH__ 6. Creare un backup della configurazione attuale +# 6. Creare un backup della configurazione attuale Prima di sovrascrivere qualsiasi file: -__BT__ +` sudo mkdir -p /root/mali-before-offline-restore -__BT__ +` Salvare gli elementi principali: -__BT__ +` sudo cp -a /etc/OpenCL/vendors \ /root/mali-before-offline-restore/ @@ -200,493 +200,493 @@ sudo cp -a /usr/share/vulkan/icd.d/mali.json \ sudo cp -L /lib/firmware/mali_csffw.bin \ /root/mali-before-offline-restore/mali_csffw.bin 2>/dev/null || true -__BT__ +` --- -__HASH__ 7. Ripristinare il firmware g21 +# 7. Ripristinare il firmware g21 Creare la directory: -__BT__ +` sudo mkdir -p /lib/firmware/mali_csffw_g21p0 -__BT__ +` Copiare il firmware: -__BT__ +` sudo cp -a "$BACKUP/firmware/mali_csffw.bin" \ /lib/firmware/mali_csffw_g21p0/mali_csffw.bin -__BT__ +` Creare il link attivo: -__BT__ +` sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin \ /lib/firmware/mali_csffw.bin -__BT__ +` Verificare: -__BT__ +` readlink -f /lib/firmware/mali_csffw.bin -__BT__ +` Deve puntare a: -__BT__ +` /usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin -__BT__ +` Controllare SHA-256: -__BT__ +` sha256sum /lib/firmware/mali_csffw.bin -__BT__ +` Deve risultare: -__BT__ +` 8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 -__BT__ +` --- -__HASH__ 8. Ripristinare le librerie Mali userspace +# 8. Ripristinare le librerie Mali userspace Creare la directory: -__BT__ +` sudo mkdir -p /usr/lib/aarch64-linux-gnu/mali -__BT__ +` Copiare le librerie Mali: -__BT__ +` sudo cp -a "$BACKUP/libs/mali/." \ /usr/lib/aarch64-linux-gnu/mali/ -__BT__ +` Copiare le librerie principali: -__BT__ +` sudo cp -a \ "$BACKUP/libs/libmali-hook-injector.a" \ "$BACKUP/libs/libmali-hook.so.1.9.0" \ "$BACKUP/libs/libmali.so.1.9.0" \ /usr/lib/aarch64-linux-gnu/ -__BT__ +` --- -__HASH__ 9. Ripristinare i symlink +# 9. Ripristinare i symlink Copiare i symlink: -__BT__ +` sudo cp -a "$BACKUP/symlinks/." \ /usr/lib/aarch64-linux-gnu/ -__BT__ +` Controllare: -__BT__ +` ls -l \ /usr/lib/aarch64-linux-gnu/libmali.so \ /usr/lib/aarch64-linux-gnu/libmali.so.1 \ /usr/lib/aarch64-linux-gnu/libmali-valhall-g610-g24p0-x11-wayland-gbm.so \ /usr/lib/aarch64-linux-gnu/libmali-hook.so \ /usr/lib/aarch64-linux-gnu/libmali-hook.so.1 -__BT__ +` I collegamenti devono essere equivalenti a: -__BT__ +` libmali.so.1 -> libmali.so.1.9.0 libmali-valhall-g610-g24p0-x11-wayland-gbm.so -> libmali.so.1 libmali-hook.so -> libmali-hook.so.1 libmali-hook.so.1 -> libmali-hook.so.1.9.0 libmali.so -> libmali.so.1 -__BT__ +` --- -__HASH__ 10. Ripristinare la configurazione del linker +# 10. Ripristinare la configurazione del linker -__BT__ +` sudo mkdir -p /etc/ld.so.conf.d sudo cp -a \ "$BACKUP/linker/00-aarch64-mali.conf" \ /etc/ld.so.conf.d/00-aarch64-mali.conf -__BT__ +` Controllare: -__BT__ +` cat /etc/ld.so.conf.d/00-aarch64-mali.conf -__BT__ +` Deve contenere: -__BT__ +` /usr/lib/aarch64-linux-gnu/mali -__BT__ +` --- -__HASH__ 11. Aggiornare il linker +# 11. Aggiornare il linker -__BT__ +` sudo ldconfig -__BT__ +` Se compare il warning: -__BT__ +` ldconfig: /lib/librknnrt.so is not a symbolic link -__BT__ +` il warning è indipendente da Mali. --- -__HASH__ 12. Ripristinare OpenCL +# 12. Ripristinare OpenCL Creare la directory: -__BT__ +` sudo mkdir -p /etc/OpenCL/vendors -__BT__ +` Copiare l'ICD: -__BT__ +` sudo cp -a \ "$BACKUP/opencl/mali.icd" \ /etc/OpenCL/vendors/mali.icd -__BT__ +` Controllare: -__BT__ +` cat /etc/OpenCL/vendors/mali.icd -__BT__ +` Deve contenere: -__BT__ +` /usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 -__BT__ +` -__HASH__ Importante +# Importante Se esiste un vecchio ICD g13: -__BT__ +` /etc/OpenCL/vendors/mali-arm64.icd -__BT__ +` non deve essere attivo contemporaneamente, se si vuole riprodurre la configurazione di riferimento. Spostarlo in un backup: -__BT__ +` if [ -f /etc/OpenCL/vendors/mali-arm64.icd ]; then sudo mv /etc/OpenCL/vendors/mali-arm64.icd \ /root/mali-before-offline-restore/mali-arm64.icd.g13 fi -__BT__ +` --- -__HASH__ 13. Ripristinare Vulkan +# 13. Ripristinare Vulkan Creare la directory: -__BT__ +` sudo mkdir -p /usr/share/vulkan/icd.d -__BT__ +` Copiare l'ICD: -__BT__ +` sudo cp -a \ "$BACKUP/vulkan/mali.json" \ /usr/share/vulkan/icd.d/mali.json -__BT__ +` Controllare: -__BT__ +` cat /usr/share/vulkan/icd.d/mali.json -__BT__ +` Deve contenere un library_path equivalente a: -__BT__ +` libMaliVulkan.so.1 -__BT__ +` --- -__HASH__ 14. Ripristinare la configurazione Mali +# 14. Ripristinare la configurazione Mali -__BT__ +` sudo mkdir -p /etc/profile.d sudo cp -a \ "$BACKUP/system/mali-priority.sh" \ /etc/profile.d/mali-priority.sh -__BT__ +` Controllare: -__BT__ +` cat /etc/profile.d/mali-priority.sh -__BT__ +` --- -__HASH__ 15. Aggiornare nuovamente il linker +# 15. Aggiornare nuovamente il linker -__BT__ +` sudo ldconfig -__BT__ +` --- -__HASH__ 16. Verifica OpenCL prima del reboot +# 16. Verifica OpenCL prima del reboot -__BT__ +` clinfo | grep -E \ 'arm_release_ver|Number of platforms|Platform Version|Device Name' -__BT__ +` Configurazione attesa: -__BT__ +` arm_release_ver: g24p0-00eac0, rk_so_ver: 10 Number of platforms 1 Platform Version OpenCL 3.0 v1.g24p0-00eac0... Device Name Mali-G610 r0p0 -__BT__ +` --- -__HASH__ 17. Verifica Vulkan prima del reboot +# 17. Verifica Vulkan prima del reboot Utilizzare esplicitamente l'ICD Mali: -__BT__ +` VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json \ vulkaninfo --summary -__BT__ +` Devono comparire: -__BT__ +` Mali-G610 DRIVER_ID_ARM_PROPRIETARY apiVersion = 1.3.276 driverVersion = 24.0.0 -__BT__ +` -__HASH__ Nota +# Nota Un semplice vulkaninfo --summary può fallire con XCB se non è disponibile un server X. Il test con VK_ICD_FILENAMES è quello da utilizzare per verificare il driver. --- -__HASH__ 18. Verifica del firmware prima del reboot +# 18. Verifica del firmware prima del reboot -__BT__ +` readlink -f /lib/firmware/mali_csffw.bin sha256sum /lib/firmware/mali_csffw.bin systemctl is-enabled set-mali-firmware.service -__BT__ +` Devono risultare: -__BT__ +` /usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin 8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 disabled -__BT__ +` -__HASH__ Se il firmware non corrisponde allo SHA-256 previsto, NON riavviare. +# Se il firmware non corrisponde allo SHA-256 previsto, NON riavviare. --- -__HASH__ 19. Riavvio +# 19. Riavvio Se tutti i controlli precedenti sono corretti: -__BT__ +` sudo reboot -__BT__ +` --- -__HASH__ 20. Verifica dopo il reboot +# 20. Verifica dopo il reboot Controllare il kernel Mali: -__BT__ +` dmesg | grep -E \ 'mali fb000000.gpu: (Kernel DDK|GPU identified|Probed as mali0|Loading Mali firmware|Mali firmware git_sha)' -__BT__ +` Devono essere presenti: -__BT__ +` Kernel DDK version g21p0-01eac0 GPU identified as 0x7 arch 10.8.6 r0p0 status 0 Probed as mali0 Mali firmware git_sha: 221d2b3e5f4cf47df6227ccb24c82c4e4baa986e -__BT__ +` --- -__HASH__ 21. Verifica OpenCL dopo il reboot +# 21. Verifica OpenCL dopo il reboot -__BT__ +` clinfo | grep -E \ 'arm_release_ver|Number of platforms|Platform Version|Device Name' -__BT__ +` Atteso: -__BT__ +` arm_release_ver: g24p0-00eac0, rk_so_ver: 10 Number of platforms 1 Platform Version OpenCL 3.0 v1.g24p0-00eac0... Device Name Mali-G610 r0p0 -__BT__ +` --- -__HASH__ 22. Verifica Vulkan dopo il reboot +# 22. Verifica Vulkan dopo il reboot -__BT__ +` VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json \ vulkaninfo --summary -__BT__ +` Atteso: -__BT__ +` Mali-G610 DRIVER_ID_ARM_PROPRIETARY apiVersion = 1.3.276 driverVersion = 24.0.0 -__BT__ +` --- -__HASH__ 23. Verifica finale dell'integrità del backup +# 23. Verifica finale dell'integrità del backup Il backup originale non deve essere modificato durante il ripristino. Se il backup si trova ancora nella posizione originale: -__BT__ +` sudo bash -c ' cd "$BACKUP" && sha256sum -c checksums.sha256 ' -__BT__ +` Tutti i file devono risultare OK. --- -__HASH__ 24. Problemi comuni +# 24. Problemi comuni -__HASH__ OpenCL mostra due piattaforme +# OpenCL mostra due piattaforme Controllare: -__BT__ +` ls -l /etc/OpenCL/vendors/ -__BT__ +` Se è presente il vecchio ICD g13: -__BT__ +` /etc/OpenCL/vendors/mali-arm64.icd -__BT__ +` spostarlo fuori dalla directory attiva. -__HASH__ Vulkan restituisce errore XCB +# Vulkan restituisce errore XCB Utilizzare: -__BT__ +` VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json \ vulkaninfo --summary -__BT__ +` -__HASH__ Il firmware ha SHA-256 diverso +# Il firmware ha SHA-256 diverso Non riavviare. Ripristinare: -__BT__ +` sudo cp -a "$BACKUP/firmware/mali_csffw.bin" \ /lib/firmware/mali_csffw_g21p0/mali_csffw.bin sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin \ /lib/firmware/mali_csffw.bin -__BT__ +` Poi verificare nuovamente lo SHA-256. -__HASH__ clinfo restituisce zero piattaforme +# clinfo restituisce zero piattaforme Controllare: -__BT__ +` cat /etc/OpenCL/vendors/mali.icd ls -l /usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 ldconfig -p | grep -i mali -__BT__ +` -__HASH__ Non utilizzare apt autoremove +# Non utilizzare apt autoremove Il ripristino è offline e non richiede la rimozione automatica dei pacchetti. --- -__HASH__ 25. Rollback del ripristino +# 25. Rollback del ripristino Prima del ripristino è stata creata: -__BT__ +` /root/mali-before-offline-restore/ -__BT__ +` Se qualcosa non funziona, non modificare kernel, DTB o U-Boot. Prima fermarsi e verificare: -__BT__ +` dmesg | grep -i mali clinfo VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json vulkaninfo --summary -__BT__ +` Il backup originale rimane disponibile per un ulteriore tentativo. --- -__HASH__ 26. Stato finale desiderato +# 26. Stato finale desiderato La configurazione finale deve essere: -__BT__ +` Kernel Mali g21p0-01eac0 Firmware g21p0 Userspace Mali g24p0-00eac0 @@ -694,6 +694,6 @@ GPU Mali-G610 r0p0 OpenCL 3.0 Vulkan 1.3.276 OpenCL platforms 1 -__BT__ +` Il ripristino utilizza esclusivamente i file contenuti nel backup e non richiede il download del pacchetto Mali g24 originale.