diff --git a/README.md b/README.md index 83a4d83..260d57b 100644 --- a/README.md +++ b/README.md @@ -1,127 +1,76 @@ -# Procédure pour habiliter Ubuntu 24.04.x à piloter correctement une RTX 5070 Ti +# Ubuntu 24.04.x + RTX 5070 Ti — Driver Ubuntu + CUDA 12.8 (NVIDIA) avec pinning APT -## Description du problème +## Contexte -Dans un contexte “Ubuntu vanille”, l’installation NVIDIA/CUDA peut facilement devenir instable si l’on mélange des sources de paquets : +Sur une installation Ubuntu “vanille”, la pile NVIDIA peut devenir instable si l’on mélange des sources APT (Ubuntu vs dépôt CUDA NVIDIA) pour les composants driver (libs/utilitaires/modules). Cela peut mener à des conflits de dépendances ou à des upgrades qui régressent. -- des composants NVIDIA tirés du dépôt Ubuntu (drivers/modules) -- d’autres composants NVIDIA tirés du dépôt CUDA NVIDIA (libs driver, utilitaires) -- et, en parallèle, le toolkit CUDA +## Choix d’architecture (solution testée) -Ce mélange peut produire des conflits APT (ex. `libnvidia-gl-580` vs `libnvidia-egl-gbm1`) ou des mises à jour qui brisent des dépendances.. +Règle simple : une source unique par famille de composants. -## Solution testée (choix d’architecture) +- Driver NVIDIA (modules kernel + libs + utils) : Ubuntu +- CUDA Toolkit : dépôt NVIDIA (`/usr/local/cuda-12.8`) +- Pinning APT : autoriser `cuda-*` depuis NVIDIA, empêcher NVIDIA de prendre la main sur `nvidia-*` et `libnvidia-*` -Une règle simple -> **une seule source par “famille” de composants**. +## Ce que fait ce dépôt -- **Driver NVIDIA (kernel modules + libs + utils)** : **Ubuntu** - - cohérence maximale avec le kernel Ubuntu - - intégration APT standard -- **CUDA Toolkit** : **NVIDIA** - - `/usr/local/cuda-12.8` - - toolchain CUDA stable et explicite +- `setup-rtx5070ti-ubuntu2404.sh` : installation complète (driver Ubuntu 580-open + CUDA 12.8 + pinning) +- `apt/99-nvidia-from-ubuntu-cuda-from-nvidia.pref` : pinning APT +- `env/cuda-12-8.sh` : environnement CUDA (PATH + LD_LIBRARY_PATH) +- `install.sh` : déploie les artefacts dans `/etc/...` +- `Makefile` : raccourcis (prereq/setup/apply/check/status) -Et pour empêcher les régressions lors des upgrades : +## Récupération du dépôt (Git) -- **Pinning APT** : autoriser le dépôt NVIDIA pour `cuda-*`, mais **empêcher** qu’il prenne la main sur `nvidia-*` et `libnvidia-*`. +1. Installer git (si nécessaire) : + sudo apt update + sudo apt install -y git +2. Cloner le dépôt : + git clone + cd rtx5070ti-ubuntu2404 -## Contenu du dépôt +## Chemins recommandés -- `setup-rtx5070ti-ubuntu2404.sh` - Installe le driver Ubuntu 580-open + CUDA Toolkit 12.8 + pinning APT -- `apt/99-nvidia-from-ubuntu-cuda-from-nvidia.pref` - Pinning APT (driver/libs depuis Ubuntu; `cuda-*` depuis NVIDIA) -- `env/cuda-12-8.sh` - Variables d’environnement (PATH + LD_LIBRARY_PATH) -- `install.sh` - Déploie `apt/99-...pref` et `env/cuda-12-8.sh` dans `/etc/...` -- `Makefile` - install / check +### A) From scratch (recommandé) + +1. Baseline OS (mises à jour + kernel), reboot requis + +- make prereq +- sudo reboot + +1. Installation complète, reboot requis + +- make setup + +1. Vérification + +- make check +- (optionnel) make status + +### B) Appliquer seulement les artefacts /etc + +- make apply + +## Validation (résumé) + +- make check (recommandé) + ou, en manuel : +- nvidia-smi +- nvcc --version +- apt-cache policy libnvidia-gl-580 libnvidia-egl-gbm1 nvidia-driver-580-open nvidia-utils-580 ## Prérequis - Ubuntu 24.04.x (testé avec 24.04.3 LTS) -- Accès Internet -- `sudo` -- Recommandé : Secure Boot OFF - -## Procédure from scratch - -Stabiliser l’OS (kernel + paquets), puis redémarrer : - -``` -sudo apt update -sudo apt full-upgrade -y -sudo reboot -``` - -Installer driver + CUDA + pinning APT (script), puis redémarrer : - -``` -chmod +x setup-rtx5070ti-ubuntu2404.sh -sudo ./setup-rtx5070ti-ubuntu2404.sh -# accepter le reboot en fin de script -``` - -Note : le script écrit un log dans `/tmp/rtx5070ti-ubuntu2404-setup..log`. - -## Résultat attendu - -Obtenir un environnement reproductible, maintenable par APT, et résistant aux régressions : - -- Driver NVIDIA provenant d’Ubuntu (stack cohérent avec le kernel Ubuntu) - - `nvidia-driver-580-open` - - `linux-modules-nvidia-580-open-$(uname -r)` - - `libnvidia-gl-580` - - `nvidia-utils-580` -- CUDA Toolkit provenant du dépôt NVIDIA - - `cuda-toolkit-12-8` → `/usr/local/cuda-12.8` -- Protection APT (pinning) - - Empêche le dépôt CUDA NVIDIA de remplacer `nvidia-*` / `libnvidia-*` lors d’un `apt upgrade` - - Évite notamment le conflit `libnvidia-gl-580` ↔ `libnvidia-egl-gbm1` - -## Validation - -``` -nvidia-smi -source /etc/profile.d/cuda-12-8.sh -which nvcc -nvcc --version -sudo apt update -sudo apt upgrade -y -``` - -Pour valider que le pinning APT est bien effectif : - -``` -apt-cache policy libnvidia-gl-580 libnvidia-egl-gbm1 nvidia-driver-580-open nvidia-utils-580 | sed -n '1,220p' -``` - -## Installer seulement les artefacts /etc (pinning + env CUDA) - -Déploie les fichiers du repo vers : - -- `/etc/apt/preferences.d/99-nvidia-from-ubuntu-cuda-from-nvidia.pref` -- `/etc/profile.d/cuda-12-8.sh` - -``` -sudo ./install.sh -``` - -## Makefile - -- `make install` : exécute `sudo ./install.sh` -- `make check` : checks rapides (APT policy, nvcc, nvidia-smi) +- Accès Internet, sudo +- Recommandé : Secure Boot OFF (trajet le plus déterministe) ## Notes -- La ligne “CUDA Version: …” affichée par `nvidia-smi` représente la capacité exposée par le driver, pas la version du toolkit installé. - La version du toolkit installé se valide avec : +- nvidia-smi affiche “CUDA Version: …” : c’est la capacité exposée par le driver, pas la version du toolkit installé. + La version installée se valide avec nvcc --version. -``` -source /etc/profile.d/cuda-12-8.sh -which nvcc -nvcc --version -``` +Documentation détaillée : -# \ No newline at end of file +- docs/procedure-from-scratch.md +- docs/validation.md \ No newline at end of file diff --git a/docs/procedure-from-scratch.md b/docs/procedure-from-scratch.md index 72b52b8..41ec3f7 100644 --- a/docs/procedure-from-scratch.md +++ b/docs/procedure-from-scratch.md @@ -1,36 +1,60 @@ # Procédure from scratch — Ubuntu 24.04.x “vanille” → RTX 5070 Ti OK -Cette procédure vise un résultat sans mélange de sources, ni de conflit APT. +Cette procédure vise un résultat déterministe : pas d’essais-erreurs, pas de mélange de sources, pas de conflit APT. -## 1) BIOS/UEFI +Pré-requis : exécuter les commandes depuis la racine du dépôt (là où se trouve le Makefile). -- Secure Boot OFF (évite les surprises de chargement de modules). +## 1) BIOS/UEFI (recommandé) + +- Secure Boot OFF (max déterminisme, évite les surprises de chargement de modules). ## 2) Premier boot : stabiliser la base OS Objectif : être sur le kernel et les paquets à jour avant d’installer le driver NVIDIA. -``` -sudo apt update -sudo apt full-upgrade -y -sudo reboot -``` +Option “commandes directes” : + +sudo apt update + sudo apt full-upgrade -y + sudo reboot ## 3) Installer driver + CUDA + pinning APT -Après reboot : +Après reboot, exécuter l’installation complète : -``` -chmod +x setup-rtx5070ti-ubuntu2404.sh -sudo ./setup-rtx5070ti-ubuntu2404.sh -# accepter le reboot en fin de script -``` +Option “commandes directes” : + +chmod +x [setup-rtx5070ti-ubuntu2404.sh](http://setup-rtx5070ti-ubuntu2404.sh) + sudo ./[setup-rtx5070ti-ubuntu2404.sh](http://setup-rtx5070ti-ubuntu2404.sh) + (accepter le reboot en fin de script, ou redémarrer ensuite) ## 4) Vérification post-reboot -``` -nvidia-smi -nvcc --version -sudo apt update -sudo apt upgrade -y -``` \ No newline at end of file +nvidia-smi + nvcc --version + sudo apt update + sudo apt upgrade -y + +--- + +## Variante avec Makefile (recommandée) + +Cette variante évite d’oublier une étape et normalise l’exécution. + +1. Baseline OS (mises à jour + kernel), puis redémarrage + +- make prereq +- sudo reboot + +1. Installation complète (driver Ubuntu + CUDA 12.8 + pinning APT), puis redémarrage + +- make setup +- (accepter le reboot si le script le demande, sinon sudo reboot) + +1. Vérification rapide + +- make check + +1. Résumé (optionnel) + +- make status \ No newline at end of file diff --git a/docs/validation.md b/docs/validation.md index 43086f1..48e7bcb 100644 --- a/docs/validation.md +++ b/docs/validation.md @@ -1,10 +1,20 @@ # Validation — Checks rapides +## Option : validation via Makefile + +Si le Makefile est disponible, tu peux faire une validation complète en une commande : + +- make check + +Pour un état récapitulatif (versions clés, chemin nvcc, nvidia-smi) : + +- make status + +--- + ## 1) Driver / GPU -``` nvidia-smi -``` Attendu : @@ -13,39 +23,37 @@ Attendu : ## 2) CUDA Toolkit (version installée) -``` -which nvcc -nvcc --version -``` +which nvcc + nvcc --version Attendu : -- `which nvcc` → `/usr/local/cuda-12.8/bin/nvcc` -- `nvcc --version` indique CUDA 12.8 +- which nvcc → /usr/local/cuda-12.8/bin/nvcc +- nvcc --version indique CUDA 12.8 Note : -- “CUDA Version: …” dans `nvidia-smi` n’est pas la version du toolkit installé ; c’est la capacité exposée par le driver. +- “CUDA Version: …” dans nvidia-smi n’est pas la version du toolkit installé ; c’est la capacité exposée par le driver. ## 3) APT anti-régression (pinning effectif) -``` apt-cache policy libnvidia-gl-580 libnvidia-egl-gbm1 nvidia-driver-580-open nvidia-utils-580 | sed -n '1,220p' -``` Attendu : -- Les candidats `nvidia-*` / `libnvidia-*` proviennent d’Ubuntu -- Le dépôt CUDA NVIDIA apparaît, mais ne “gagne” pas pour `nvidia-*` / `libnvidia-*` (pinning actif) +- Les candidats nvidia-\* / libnvidia-\* proviennent d’Ubuntu +- Le dépôt CUDA NVIDIA apparaît, mais ne “gagne” pas pour nvidia-\* / libnvidia-\* (pinning actif) ## 4) Upgrade propre -``` -sudo apt update -sudo apt upgrade -y -``` +sudo apt update + sudo apt upgrade -y Attendu : -- Aucun conflit `libnvidia-gl-580` ↔ `libnvidia-egl-gbm1` -- Aucun paquet cassé / retenu pour cause de dépendances NVIDIA \ No newline at end of file +- Aucun conflit libnvidia-gl-580 ↔ libnvidia-egl-gbm1 +- Aucun paquet cassé / retenu pour cause de dépendances NVIDIA + +Alternative équivalente (baseline OS) : + +- make prereq (puis reboot recommandé) \ No newline at end of file