### 重裝 nvidia driver #### Steps 1. 查看是否有任何 Nvidia Package - ```dpkg -l | grep nvidia``` 3. 將這些 Package 一個不留的刪光 - ```sudo apt-get remove --purge '*nvidia*'``` 5. 反覆前兩步驟,若有殘留的套件則手動刪除 - ```sudo apt-get remove --purge nvidia-driver-525-server``` 7. 檢查是否有程序正在使用 Nvidia 裝置 - ```sudo lsof /dev/nvidia*``` 9. 發現有 Xorg 正在啟用圖形化介面,把他關掉 - ```sudo systemctl isolate multi-user.target``` 11. 執行 Nvidia 官方的刪除程式 - ```sudo nvidia-uninstall``` 13. 刪除多餘的殘留套件 - ```sudo apt autoremove``` 15. 檢查 DKMS 的 Nvidia 狀態 - 安裝 DKMS 套件:```sudo apt-get install dkms``` - 檢查 DKMS 狀態:```sudo dkms status``` 17. 刪除 DKMS 底下所有與 Nvidia 相關的資料夾,例如: ```shell= # ls /var/lib/dkms sudo rm -rf /var/lib/dkms/nvidia-srv sudo rm -rf /var/lib/dkms/nvidia-440 sudo rm -rf /var/lib/dkms/nvidia-465 ``` 19. **(非常重要)重新開機** - 重開前確認 nvidia-smi 指令並不存在,但即便不存在,重開之後也有可能冒出來 21. 重開後輸入 nvidia-smi 確認此指令並不存在,代表大致上刪除成功 22. 重新安裝 Nvidia Driver - 更新 nvidia driver cache - ```sudo add-apt-repository ppa:graphics-drivers/ppa``` - ```sudo apt update``` - 查詢有哪些 Driver 版本可以安裝 - ```apt-cache search nvidia-driver``` - 安裝目標版本的驅動程式,例如 525 為 CUDA 12.0 * ```sudo apt-get install nvidia-driver-525-server``` * 如果是使用桌面版的 Ubuntu 則可以透過以下指令安裝: * ```sudo ubuntu-drivers autoinstall``` 23. 安裝過程中發生類似以下的訊息: <details><summary>Logging Message</summary> Setting up nvidia-dkms-525-server (525.105.17-0ubuntu0.20.04.1) ... update-initramfs: deferring update (trigger activated) INFO:Enable nvidia-srv DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here Loading new nvidia-srv-525.105.17 DKMS files... Building for 5.4.0-152-generic Building for architecture x86_64 Building initial module for 5.4.0-152-generic Secure Boot not enabled on this system. Done. nvidia.ko: Running module version sanity check. Error! Module version 525.105.17 for nvidia.ko is not newer than what is already found in kernel 5.4.0-152-generic (530.41.03). You may override by specifying --force. </details> 14. 解決方法:透過 DKMS 強制載入 * sudo dkms install -m nvidia-srv -v 525.105.17 -k 5.4.0-152-generic --force * 其中 525.105.17 與 5.4.0-152-generic 是根據 Logging Message 決定的 * 安裝的若不是 Server 版的 Nvidia Driver,則 -m 後面可能不是接 nvidia-srv * 可能是根據 INFO:Enable ... 決定的 * 可能訊息長的不會完全一樣,但如果有類似 .ko 的訊息跑出來就可以試試看強制載入 DKMS 的指令。 15. 保險起見可以再重開一次。 16. 再次執行 nvidia-smi 確定驅動程式版本安裝成功 17. 安裝 [Cuda](https://developer.nvidia.com/cuda-12-1-0-download-archive) 18. 執行 hello_nlplab.sh 安裝 nvidia-docker 19. ```sudo systemctl restart docker``` 20. 關閉自動更新(鎖定版本) ```sudo apt-mark hold nvidia-driver-535``` 解除 ```sudo apt-mark unhold nvidia-driver-535``` 檢查 ```sudo apt-mark showhold``` --- ### 如果有兩顆硬碟,自動 mount 在系統 1. `sudo blkid` 看看有沒有硬碟顯示在上面,如果有,直接跳到第六點 2. `lsblk` 查看有沒有分區 3. 使用 parted 分區(假設硬碟是 /dev/sda) * `parted /dev/sda` * `(parted) mklabel gpt` * `(parted) mkpart primary 0% 100%` * `(parted) print` 檢查有沒有分區 * `(parted) quit` 4. 格式化硬碟 `sudo mkfs.xfs /dev/sda1` 5. mount 硬碟 `sudo mount /dev/sda1 /data` 6. 使用 `sudo blkid -c /dev/null` 查看新分區的 UUID 7. 將 blkid 的 id 以 `UUID=your-uuid-here /data xfs defaults 0 2` 填入 `/etc/fstab` ref: * [如果硬碟超過2TB,分區教學](https://www.tecmint.com/add-disk-larger-than-2tb-to-an-existing-linux/) * [教學](https://www.linuxbabe.com/desktop-linux/how-to-automount-file-systems-on-linux) --- ### 如果有兩顆硬碟,記得要把 Docker 預設在比較大的硬碟裡 1. 檢查有沒有 docker configure 檔案`sudo cat /etc/docker/daemon.json` 2. 將以下填入 ```json { "data-root": "mount directory" } ``` 3. 重啟docker ```shell= sudo systemctl restart docker ``` ref: * [教學](https://docs.docker.com/config/daemon/) --- ### container內部出現Failed to initialize NVML: Unknown Error 在server輸入以下指令可復現此現象 ``` shell= sudo systemctl daemon-reload ``` **1. 修改啟動指令** 將 /etc/default/grub 中的 ```shell= GRUB_CMDLINE_LINUX_DEFAULT="" ``` 修改成 ```shell= GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=false" ``` 如果原本已經有東西就接在後面 然後輸入 ```shell= sudo update-grub ``` 完成後**重啟電腦**並輸入 ```shell= cat /proc/cmdline ``` 如果裡面包含**systemd.unified_cgroup_hierarchy=false**就成功了 **check cgroup version** ```shell= mount | grep cgroup2 ``` cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot) **2. 設定no-cgroups** 在/etc/nvidia-container-runtime/config.toml中添加 ```shell= no-cgroups = false ``` 重啟docker或server後就設定好了 ```shell= sudo systemctl restart docker ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up