数か月前から splash screen で再起動がかかる Ubuntu。
GRUB_CMDLINE_LINUX_DEFAULT に mce=off を追記したら、すんなり起動しました。
何だろう?
数か月前から splash screen で再起動がかかる Ubuntu。
GRUB_CMDLINE_LINUX_DEFAULT に mce=off を追記したら、すんなり起動しました。
何だろう?
miniconda を入れたら、defults チャンネルを削除できなくなっていました。
$ conda config --remove channels defaults
~/miniconda3/.condarc を書き換えるだけでした。
channels:
- conda-forge
これで conda-forge がデフォになりました。
Dockerが走らなくなっていたPCは再インストールから。
$sudo apt update
$sudo apt install -y nvidia-container-toolkit
$sudo systemctl restart docker
$sudo docker run --gpus all --ipc=host --ulimit memlock=-1 -it --rm -v /media/user/Data/:/workspace/data/ nvcr.io/nvidia/nvhpc:25.5-devel-cuda_multi-ubuntu24.04
$cd workspace/data/src_gpu
$make
makeファイルのオプション:
FLAGS = -O3 \
-byteswapio \
-tp=znver4 \
-Mfma \
-Mcache_align \
-Mvect=simd \
-acc=gpu,multicore \
-gpu=cc89,mem:managed \
-mp=allcores,bind \
-Minfo=accel,mp,inline
-O3: 最適化レベル
-byteswapio: I/O操作でバイト順序を入れ替え
tp=znver4: AMD Zen4アーキテクチャを対象プロセッサとして指定
-Mfma: 融合乗算加算(FMA)命令を有効化
-Mcache_align: キャッシュ利用効率向上のためのデータアライメント
-Mvect=simd: SIMDベクトル化を有効化
-acc=gpu,multicore: GPUとマルチコア加速のためのOpenACCを有効化
-gpu=cc89: Capability 8.9(Hopperアーキテクチャ)を対象
mem:managed: CUDA管理メモリを使用
-mp: OpenMPの並列処理設定
allcores: 利用可能な全CPUコアを使用
bind: スレッドをCPUコアに固定
-Minfo: コンパイラ情報出力
accel: アクセラレータ(GPU)コード生成情報
mp: マルチプロセッシング/OpenMP最適化情報
inline: 関数インライン化情報
GRUB 操作時に不意に再起動する現象に遭遇。
PC購入時より、計算中にメモリを使いきると再起動する問題があったので、メモリテストを実施。するとメモリテスト中にも再起動が発生。
メモリを抜き差しして、再度テスト。3時間くらい走らせて止めました。
計算で負荷をかけて様子を見ます。
引き続き、お盆の間にPCのメンテナンスです。
後輩君が使用していた計算用の Ubuntu 24.04 v6.14 がカーネルパニックを起こして起動しなくなりました。引っかかていた NVIDIA ドライバを UPDATE したら解決するだろうと思っていたのですが、挙げてみるとたカーネル v6.11 も起動しなくなりました。どうも、Nouveau(オープンソースの NVIDIA ドライバ)と衝突している模様。カーネルの起動オプションに nomodeset を追加して Nouveau ドライバのモードセット(modeset)機能を無効化。
設定方法は以下の通りです。
一時的にnomodesetを使う方法(起動時のみ):
PC起動時にGRUBメニューが表示されたら、Ubuntuの起動エントリを選択し、eキーを押して編集モードに入る。
linux行の中にある quiet splash の部分を探し、その後ろに nomodeset を追加する。
F10キーを押して起動する。
恒久的にnomodesetを設定する方法:
/etc/default/grub
変更前:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
変更後:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
v6.14はまだ起動しませんので、GRUB内の起動順序を入れ替えます。
変更前:GRUB_DEFAULT=0
変更後:GRUB_DEFAULT="1>2"
$ sudo update-grub
これで起動できました。うーん、対処療法。
22.04でも設定し、その後忘れてしまったリモート時のパス固定。
GNOME Remote Desktop はパスワードをキーリングに保存しますが、起動時にキーリングがロックされているとパスワードが読み込めず、新しいパスワードを自動生成してしまいます。ダミーのキーリングを作成し、パスワードを暗号化しない(空パスワード)状態にすることで、キーリングのロック問題を回避し、パスワードが固定されるようにします。
パスワードを固定する手順
1. Seahorse(パスワードと鍵)をインストール・起動
$ sudo apt install seahorse
$ seahorse
2. 新しいパスワードキーリングを作成
Seahorse の左ペインで「新しいパスワードキーリング」を追加
任意の名前を付けて作成
パスワード入力画面が出たら、リターンキーを2回押して空パスワードで保存
作成したキーリングをデフォルトに設定
3. 作成したキーリングを右クリックし、「デフォルトにする」を選択
リモートデスクトップのパスワードを再設定
4. Seahorse で元の「ログイン」キーリングに戻す
Seahorse を再度開き、作成したダミーキーリングに「GNOME Remote Desktop」関連のパスワードが保存されていることを確認
元の「ログイン」キーリングを右クリックして「デフォルトにする」に戻す
5. その他
オートログイン設定
「設定」-「システム」-「ユーザー」を選択
「自動ログイン」をオン
自動ロック解除(画面ロック無効化)方法
「設定」-「プライバシーとセキュリティー」-「画面ロック」
スイッチをオフ
片道4時間、日帰りで、観測システムを修復してきました。
Linuxに不慣れだった後輩君が設定していたため細部の設定に漏れがあったこと、私の管理ミスでこれを見逃していたこと、夏場の高温でハードの一部に不具合が発生していたこと、最終的には停電がトリガーとなったこと等、いくつかの要因が重なり問題となりました。で、現場まで赴くことに。
原因を突き止めてしまえばその場で対応できる、比較的簡単なソフト側の対策で済んだのですが、熱だけはハード対策が必要そうでした。が、これは高価な製品を購入しないと対応できません。うーん。
システム修復後、ついでに DNS を設定。GUIからなぜか反映されていなかったので、コマンドで変更。
$ sudo vi /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8
$ sudo systemctl restart systemd-resolved.service
apt update は成功しますが、upgrade で失敗します。古いリストが残ったままなのでしょう。リストを全消ししてから再度 update & upgrade。upgrade には時間がかかりました。
$ sudo rm -r /var/lib/apt/lists/*
ひとまず周辺環境を含め目についた問題は全てつぶしておきました。今回は停電により、隠れていた問題も同時に顕在化しました。最初に見逃さないようにしないと、このように不要な対応が発生します。気を付けましょう。
Ubuntu でのスクリプト自動実行は2通り。
・「自動起動するアプリケーション」に登録
・スクリプトをsystemdに登録。
前者が一文を書くだけなので楽です。
後者は手順が多い。↓
1. unitを作成する。
etc/systemd/system/recvt_auto_start.service
[Unit]2. 自動起動として設定。
Description=recvt_auto_start
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/home/[user]/WIN/recvt_auto_start.sh
[Install]
WantedBy=default.target
3. OS再起動後、稼働状況を確認。
$ journalctl -u recvt_auto_start
これでOSが再起動しても引き続き受信できる、できたらいいなあ。
*************************************************
20230822追記
今のところ、正常動作しています。何度も再起動しましたが問題なし。大丈夫そうです。
Ubuntu22.04 で、またもや apt upgrade できなくなりました。
error while loading shared libraries: libcrypto.so.1.1
こちらで対応。
https://stackoverflow.com/questions/72133316/libssl-so-1-1-cannot-open-shared-object-file-no-such-file-or-directory
まだ駄目。GRUB が引っかかっているようです。
"Cannot upgrade Secure Boot enforcement policy due to unsigned kernels....https://www.kubuntuforums.net/forum/currently-supported-releases/kubuntu-20-04-focal-fossa-lts/software-support/665555-this-pops-up-when-using-dist-upgrade
Ubuntu22.04 の1台で、apt upgrade が使えなくなって2ヶ月。
Teams を入れようとして支障が出たため、重い腰を上げることにしました。
「大量のエラーが発生したため、処理が停止しました。」
この場合の対応はweb上に色々と書かれています。手当り次第試しましたが駄目。そういえば、手がなくなって寝かせていたのでした。
最後にた取りついたのがコチラ。
you need to remove the post-installation script of the packages
https://askubuntu.com/questions/1371963/ubuntu-20-04-lts-failed-to-install-linux-image-5-4-0-89-generic
次は1発で済ませます。
Ubuntu は手元に3台あるのですが、2台は 20.04、1台は18.04。
1台だけ環境が異なると支障の出る場合があり、最後の1台も上げましょうと重い腰を上げました。
「Software Updater」で 「upgrade」 をポチ、で、できるはずだったのですがボタンを押しても無反応。
$ sudo apt dist-upgrade
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
cuda-driver が引っ掛かっていました。
$ sudo apt install cuda-drivers
はい、確かにインストール不可→対処↓
https://forums.developer.nvidia.com/t/cuda-install-unmet-dependencies-cuda-depends-cuda-10-0-10-0-130-but-it-is-not-going-to-be-installed/66488/16
$ sudo apt clean
$ sudo apt update
$ sudo apt purge cuda-drivers
$ sudo apt purge nvidia-*
$ sudo apt autoremove
$ sudo apt install cuda-drivers
nvidia-* は迷いましたが、また入れたら良いでしょうと考え enter⏎。
これで完了。
最後に「Software Updater」 で upgrade ボタンを押すと反応しました。
Ubuntu20.04 に、Windows10 から ssh して Jupyter notebook を動かしてみました。
以前から、Ubuntu の Python 環境を Windows10 から使いたいなと考えていました。ライブラリの OS 対応状況が異なっており、ラップトップの Win10 では制約が生まれていたためです。GUI 接続は遅いし、ラップトップをデュアル OS にしても GPU を使えないし、ということで、SSH の出番です。
(これらの内容は web 上に情報があふれていますので、最低限と思われる部分のみをメモしておきます。)
まずは、ホスト側の準備。(Ubuntu20.04)
Ubuntu に OpenSSH server をいれます(入れていませんでした)。
$ sudo apt install openssh-server
サーバーを起動。
$ sudo systemctl start ssh
鍵を作成。
秘密鍵「id_rsa」と公開鍵「id_rsa.pub」が作成されます。
※秘密鍵はローカルホストに保存します。隠しファイルを表示しないと見えません。
$ ssh-keygen -t rsa
「id_rsa.pub」を「authorized_keys」にリネーム。
$ cd ~/.ssh
$ mv id_rsa.pub authorized_keys
次に、クライアント側(Win10)。
ローカルホストに秘密鍵「id_rsa」を保存します。cdコマンドを打たなくてもよいように、同パスにcmd.exe をコピー。そこから立ち上げて ssh の流れです。
余談ですが、AWSのEC2でも ssh 接続の場合は同じようにコマンドを打つだけでしたね。AWSの場合は接続まで仮想ネットワークを構築する作業が必要でしたけど。
https://phreeqc.blogspot.com/2018/10/aws-2.html
・セキュリティ
Multi-Factor Authentication (MFA), security group (インスタンスの仮想 FireWall)
・アカウント
AWS Identity and Access Management (IAM) ユーザー (group, policy)
・ネットワーク
Amazon Virtual Private Cloud (Amazon VPC: IP, subnet, route table, internet gateway), elastic IP
・仮想マシン
EC2
・ssh
ssh -i ~/.ssh/Key.pem ec2-user@IP
うーん、なんだか実機にアクセスするよりもセキュリティーが厳しいような。というか、これが普通で、実機が甘いのでしょうね。
Win10 も RS4(1803) で SSH に標準対応していたそうです(Windows Subsystem for Linux + Ubuntu は不要でした)。
https://phreeqc.blogspot.com/2018/10/aws.html
cmd.exe から以下をたたいて接続。ポートフォワーディング機能を使います。
※cmd.exe と 秘密鍵を同じパスにおいておけば、-i オプションも不要
$ ssh -L 8888:localhost:8888 pc-user@IP
これでJupyter notebook をたたけばサーバーが立ち上がります。あとはクライアント側のブラウザでサーバーにアクセスすればOK。
AWSではここで手こずりましたが、実機ではあっさり動きました。config 作っていたかな?
https://phreeqc.blogspot.com/2019/01/ec2-h2o-jupyter.html
****************************
ファイルの転送は WinSCP のままです。Jupyter 用途だと、あまり使わないですかね。
| CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
|---|---|---|
| CUDA 10.0.130 | >= 410.48 | >= 411.31 |
| CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
| CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
| CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
| CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
| CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
| CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
| CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
| CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
# CUDA 9.2 is not officially supported on ubuntu 18.04 yet, we use the ubuntu 17.10 repository for CUDA instead.ドライバーを手動で上げて、9.2を入れようかな?と思いましたが、急ぐ必要もないので公式対応まで待つことにしました。