注意
この記事及び当ブログに書かれている事を実践した場合の結果について、私は一切の責任を負いません。
また、情報の正確性についても一切保証いたしません。
全て自己責任で判断して下さい。
PC環境
1台目(既成品/職場):
・フォーム ファクター: ミドルタワー形デスクトップPC
・CPU: AMD Ryzen 5
・RAM: 16GiB
・Graphics: NVIDIA GeForce RTX 3060 (VRAM: 12GiB)
2台目(自作/自宅):
・フォーム ファクター: ミドルタワー形デスクトップPC
・CPU: Intel Core i7-13700
・RAM: 64GiB
・Graphics: NVIDIA GeForce RTX 4070 SUPER (VRAM: 12GiB)
前書き
自宅及び職場の私のPCにはUbuntu OSをインストールし、PyTorchで機械学習モデルを構築したり、 Raspberry Pi 4 Model B や Raspberry Pi Pico で検査機を開発したり、PLCを使った装置の図面をCADで描くなどする為の環境を構築してあります。
自宅のUbuntu PCについてはプログラミングなどに限らず日常的に使用しており、ウェブのブラウズやSNSのBlueskyの為の使用、Amazon Prime Videoで映画も観ますし、オーディオ システムのソースとして音楽も再生します。
自宅のPCは4月時点からUbuntu 24.04 LTSにアップグレードしてあり、職場のPCは2024年9月6日現在までUbuntu 22.04 LTSで使用しておりました。
先日、 “Ubuntu 24.04.1 LTS” というポイント リリースがありまして、自宅のPCは現在は既にこのポイント リリースが適用されている状態ですが、この機会に職場のPCも自宅と同じくUbuntu 24.04.1 LTSにアップグレードしました。
只、その際幾つかの問題に見舞われてしまいましたので、それらを解決して開発環境を再構築した際の手順を自分の為の覚え書きとしてここに記録して置こうと思います。
尚、今回はディスプレイ サーヴァーが “X11” から “Wayland” へ移行する過渡期である事などから、ストレージのSSDを全消去してのクリーン インストールとしています。
実際の手順と発生した問題、それらの解決方法
基本的に自分用の覚え書きですので、箇条書きとさせて頂きます。
まず、アップグレード前にUSB接続の外付けSSDにUbuntu PCのホーム ディレクトリー内のデータ フォルダーを全てバックアップしました。
尚、名前の先頭が “.” (ドット)から始まる設定ファイルなどの隠しフォルダー、隠しファイルについては、アップグレード後に書き戻すと不整合が発生する可能性があるので、自分が作成し、把握しているものだけを選択的にバックアップしました。
私の場合、ファイル数は60万弱ありましたね。
そしてUbuntu公式ウェブサイトからOSの.isoイメージ ファイルをダウンロードして起動用USBを作成するのですが、日本語ページである “https://jp.ubuntu.com/” は2024年9月6日現在は更新が遅れているようで、ポイント リリース前のヴァージョンのリンクのままでリンク切れとなっており、ダウンロードが出来ませんでした。
ですので、以下のURLのUbuntu公式ウェブサイトの英語ページからOSの.isoイメージ ファイルをダウンロードしました。
https://ubuntu.com/download
“ブータブルUSBの作成” アプリで、ダウンロードした.isoファイルを指定して起動用USBを作成し、PCに挿入したまま再起動、OSの起動前に “F2” キーと “Del” キーを連打してUEFI画面を呼び出し、USBから起動するよう設定、再起動し、USBから起動、 “Try or Install Ubuntu” メニューでUbuntu 24.04.1 LTSをインストール開始。
途中で “既定の選択” (最小構成)にするか、 “拡張選択” (必要そうなアプリ一式が自動的にインストールされる)にするかの選択画面が出ましたが、私は “拡張選択” でインストールしました。
プロプライエタリーなソフトウェアをインストールするかを尋ねるオプションはどちらもチェック マークを付けました。
ユーザー名やパスワードの設定などを経てインストールが完了。
ここで何故かディスプレイ サーヴァーが “Wayland” ではなく初めから古いプロトコルの “X11” になっており、その場合はアプリの起動が異常に遅く、また、GUIのダーク テーマなどのカラー テーマが適用されるまで長時間掛かるという不具合に遭遇。
これを直す為、再起動の後、ログイン画面でアカウントを選択し、画面右下の歯車アイコンでディスプレイ サーヴァーを “Ubuntu” -> “Ubuntu on Wayland” に変更しました。
すると上記の不具合は解消しました。
次に、日本語入力メソッド(IM / Input Method)が既定では “iBus” で、日本語変換エンジンが “iBus-Mozc” ですが、このままだと文字入力から漢字変換してEnterキーの押下で確定した際に何故か変換対象文字列が変換確定文字列の後ろに複写されてしまう不具合がありました。
ですので、日本語入力環境を整える必要があり、以前の記事にも書きましたが、IMは “Fcitx 5” 、日本語変換エンジンは “fcitx5-mozc” に変更しました。
因みに “Fcitx” は “ファイティクス” と読むそうです。
sudo apt install fcitx5-mozc
Fcitx 5をインストール後、 “設定” アプリの “システム” -> “地域と言語” -> “Manage Installed Languages” -> “キーボード入力に使うIMシステム” を “Fcitx 5” に変更。
再ログイン後、メニュー バーのIMボタンを押して、”設定” -> “現在の入力メソッド” で “Mozc” を残して他をボタンで削除。
メニュー バーのIMボタンを押して、 “Mozcの設定” -> “設定ツール” -> “入力補助” タブ -> “シフトキーでの入力切替” を “英数字” から “カタカナ” に変更。
初回のログイン直後は不具合により日本語入力が出来ませんでしたが、再起動すると正常に入力可能になりました。
ここで、外付けSSDにバックアップして置いたデータ ファイルをPC本体のストレージ(SSD)に注意深く選びながら書き戻しました。
画像編集ソフトウェアの “GIMP” は2024年9月6日現在、snap版では文字入力が出来ませんでしたので、Flatpak版をインストールしました。
但しこれでも日本語の文字入力が出来ない問題がありますが、仕方がありません。
まずはFlatpakのアプリをインストール出来るようにします。
sudo add-apt-repository ppa:flatpak/stable
sudo apt update
sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
ここでPCを再起動します。
以下は私が追加でインストールしたアプリです。
- GIMP
充分に使用出来る画像編集アプリ。 - LibreCAD
基本的な2D CADアプリとして充分に使用出来ます。 - LibrePCB
プリント基板用CADアプリです。 - FreeCAD
やや使い難い気がしますが、3D CADアプリです。
残念ながらUbuntu 24.04.1 Wayland環境ではFlatpak版もsnap版も正常に動作しませんでした。 - Firefox Developer Edition
ウェブブラウザーです。
.desktopファイルを書いてランチャーに登録してあります。 - XnConvert
多数のファイル形式の画像ファイルをバッチ処理でフィルター処理や切り抜きなどの編集や変換が出来ます。 - KRename
ファイル名の一括変換アプリです。
名前の一部をルールに則って変換したり連番を作成したりといった事が簡単に出来ます。
ここで、幾つかのアプリが起動しない、ウィンドウが画面に表示されないなどの不具合が生じました。
この不具合については、私の場合はFlatpakの “ソフトウェア” アプリで “GNOME Application Platform” をアップデートした時点で直りましたが、本当にそれが原因かどうかは定かではありません。
USBカメラをPythonスクリプトから自在に操作する為に、 “V4L2” をインストールしました。
sudo apt install v4l-utils
私は以前のUbuntuではPythonの生環境に対して直接的に “pip install xxxx” していたのですが、Ubuntu 24.04 LTSではPythonは仮想環境で使う事が標準的なようですので、各プロジェクト毎に “venv” の仮想環境を作成して使用します。
尚、以下の説明に出て来る “UserName” という文字列は、各自のユーザー名に置き換えて下さい。
同様に、 “ProjectName” はそれぞれのプロジェクトのディレクトリー名に置き換えて下さい。
“VenvName” はそれぞれの仮想環境名に置き換えて下さい。
sudo apt install python3.12-venv
cd ~/ProjectName/
python3 -m venv VenvName
尚、仮想環境名は毎回作成する際に迷うので、”venv” とする事が多いようです。
venv を activate します。
source VenvName/bin/activate
python -V
# Python 3.12.3
“pip install PackageName” で以下のエラー メッセージが出ました。
ModuleNotFoundError: No module named 'pip'
次のコマンドで解決しました。
source VenvName/bin/activate
python3 -m ensurepip
# The ensurepip package provides support for bootstrapping the pip installer into an existing Python installation or virtual environment.
以下の様に仮想環境にパッケージをインストールして行きます。
まずは機械学習の為に、 “PyTorch“。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
python3 -c 'import torch; print(torch.__version__)'
# 2.4.0+cu118
“Numpy“。
pip install numpy
グラフ描画の為に “PyQt5“。
pip install PyQt5
GUIウィンドウを表示させたい場合に “Tkinter” (ティー ケー インター)。
sudo apt install python3.12-tk
tkinter の利用例。
import tkinter
root = tkinter.Tk()
root.mainloop()
pip install torchsummary
pip install easydict
Pythonスクリプトを実行中にキーボードから文字入力を受け取る為に “readchar“。
pip install readchar
グラフなどの描画の為に、 “Matplotlib“。
pip install matplotlib
音声再生の為に、 “PyAudio“。
pip install pyaudio
# Could not import the PyAudio C module 'pyaudio._portaudio'.
# ...
# ImportError: libportaudio.so.2: cannot open shared object file: No such file or directory
エラーが出たので、 “libportaudio.so.2” を得る。
sudo apt install portaudio19-dev
pip install pyaudio
これで音声の再生が出来る。
一般ユーザーに対してUSBデヴァイスを操作する権限を与える。
cd /etc/udev/rules.d
sudo touch 90-usbRules.rules
sudo vim 90-usbRules.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="aaaa", ATTR{idProduct}=="bbbb", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="cccc", ATTR{idProduct}=="dddd", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="eeee", ATTR{idProduct}=="ffff", MODE="0666"
sudo udevadm control --reload-rules && sudo udevadm trigger
sudo chmod 666 /sys/bus/usb/drivers/usb/unbind
sudo chmod 666 /sys/bus/usb/drivers/usb/bind
上記の “.rules” ファイル名は2桁の50より大きな半角数字で始める。
設定ファイルがファイル名の若い順に読み込まれて適用されるので、大きな数字でないと設定が上書きされる可能性がある。
また、USBの属性値の “idVendor” の値及び “idProduct” の値はそれぞれのUSBデヴァイスについて以下のコマンドで調べて置き換える。
lsusb
lsusb -t
PythonプログラムからのUSBポートの電源のON/OFFやリセットの為に、 “uhubctl“。
sudo apt install uhubctl
引数。
-a off: action off
-l 1-1: location 1-1: bus 1, port 1(Hub)
-p 2: port 2
使用例。
uhubctl
uhubctl -a off -l 1-1 -p 2
uhubctl -a on -l 1-1 -p 2
# Bus 01 / Port 1 / Port 2 / USB Device
# Bus 01 (port1; root hub) に吊り下がる Port 1 (hub) の Port 2 をONしますよという意味。
画像処理ライブラリーの “OpenCV“。
pip install opencv-python
venv をdeactivateする。
deactivate
Raspberry Pi 4 Model B で GPIOのI2C通信を利用してLCDを制御するなどの場合に以下をRaspberry Pi 4 Model Bにインストールする。
sudo apt install i2c-tools
pip install smbus2
鬱陶しい “tracker-miner-fs-3” と “tracker-extract-3” について、サーヴィス起動デーモン “systemd” の “tracker3” をマスクして無効化する。
tracker3 daemon -t
systemctl --user mask tracker-miner-fs-3.service tracker-extract-3.service
不要となったインデックス ファイルとディレクトリーを削除する。
rm -rf ~/.cache/tracker3 ~/.local/share/tracker3
“NVIDIA Driver” のインストール。
# 使用しているGPUの確認
lspci | grep -i nvidia
# 現状入っているCUDA, nvidia-driverの確認
dpkg -l | grep nvidia
dpkg -l | grep cuda
# 現状入っているCUDA nvidia driverの削除
sudo apt purge nvidia-*
sudo apt purge cuda-*
# 以下で推奨のdriverを確認
ubuntu-drivers devices
# Driverのインストール
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-560
# 再起動
sudo reboot
# 以下で確認
nvidia-smi
“CUDA Toolkit” のインストール。
実際はNVIDIAのウェブサイトの指示に従って書き換える。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.1/local_installers/cuda-repo-ubuntu2404-12-6-local_12.6.1-560.35.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-12-6-local_12.6.1-560.35.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install cuda-toolkit-12-6
“CUDA Driver” のインストール。
インストールの途中でSecure Bootのパスワードの設定を求められる場合がある。
sudo apt install nvidia-open
nvidia-smi
# Failed to initialize NVML: Driver/library version mismatch
エラーが出た。
以下のコマンドで実際のヴァージョン情報を調べる。
# NVML (NVIDIA Management Library)
cat /sys/module/nvidia/version
# 560.35.03
# NVRM (NVIDIA Resource Manager)
cat /proc/driver/nvidia/version
#NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 560.35.03 Release Build (dvs-builder@U16-I1-N07-12-3) Fri Aug 16 21:42:42 UTC 2024
#GCC version: gcc version 13.2.0 (Ubuntu 13.2.0-23ubuntu4)
両方共同一ヴァージョンなので正常である。
従って、再起動により症状は直る。
もし直らない場合は、GPUドライヴァーとCUDAドライヴァー、CUDA Toolkitを一旦完全に削除し、正しいヴァージョンをインストールし直す。
$ nvidia-smi
Thu Sep 5 14:46:08 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3060 Off | 00000000:01:00.0 On | N/A |
| 0% 49C P8 17W / 170W | 251MiB / 12288MiB | 1% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2324 G /usr/bin/gnome-shell 119MiB |
| 0 N/A N/A 3408 C+G /usr/bin/nautilus 57MiB |
| 0 N/A N/A 3465 C+G /usr/bin/gnome-text-editor 31MiB |
+-----------------------------------------------------------------------------------------+
インストールされているCUDAのヴァージョンを確認する。
/usr/local/cuda/bin/nvcc --version
インストールされているPyTorchのヴァージョンを確認する。
pip list | grep torch
Raspberry Pi Picoに “MicroPython” のスクリプトを転送したりする為にリモート シェルである “rshell” をインストールする。
pip install rshell
USBカメラをPythonスクリプトから操作出来るようにする。
Linuxではカメラ デヴァイスはデヴァイス ファイルとして “/dev/video0” や “/dev/video1” として認識される。
# デヴァイス ファイルの権限を確認する。
ls -l /dev/video*
# ユーザーをグループに追加する。
sudo adduser UserName video
# ユーザーの所属グループを確認する。
groups UserName
# デヴァイス ファイルの権限を確認する。
ls -l /dev/video*
と、こんな感じです。
コメント