Linux(Debian) Desktopトラブルシューティング
本スクラップは、Linux(Debian11)をメインデスクトップとして使うときの困りごとをまとめていく。
筆者は基本的にソフトウェア関連のインストールなどは、ansibleベースで管理している。
しかしansibleで管理するにはややこしいこと(特にハードウェアが関連する部分)については、手動であれこれ調整しているのでそれを軽くメモ書きとして残す。
disk mount編
lsblk -f
を用いると、ディスク(パーティション)に割り当てられているUUIDがわかる。
/etc/fstabを記述することで、どのディレクトリに(UUIDで指定された)ディスク(パーティション)
に紐付けるかを指定できる。
たまにしか触らず忘れるので書いておく。
#/etc/fstab
# メインディスクのマウント例 ここらへんはOSのインストーラに従えば勝手に書いてあるはず
UUID=ffffffff-ffff-ffff-ffff-ffffffffffff / ext4 errors=remount-ro 0 1
# NASのマウント例 IPはNASのIPを指定する。terrastationはcifsをサポートしているのでこれを使っている。
//192.168.0.2/share /mnt/192_168_0_2 cifs username=<USERNAME>,password=<PASSWORD>,vers=1.0,uid=1000,gid=1000 0 0
# 追加ディスクのマウント例 UUIDはlsblk-fで調べて書き換える、ext4の部分はディスクのファイルシステム(xfsなど)に書き換え、defaults部分はマウントオプションを調べて必要に応じ書き換える。
UUID=ffffffff-ffff-ffff-ffff-ffffffffffff /mnt/ff ext4 defaults 0 0
正しく設定できていれば、
mount -a
を使うと/etc/fstabに基づきマウントされる。(再起動でも可)
UUIDはOSを入れ替えても変わらないっぽいのでfstabを書き換えるansibleを作っても良い。
サウンド出力(sink)編
デフォルトのサウンド出力先がイヤホンジャックになっていたがHDMIに変更したい。
サウンドのコンフィグGUIからHDMI出力に変更できるが、ログアウトのたびに初期化される。
下記コマンドでデフォルトの出力先を変更できる。
pactl set-default-sink
# ↑ ここまで入力した状態でタブキーを押すと、
# 出力先候補が自動補完されるのでそれを使って求める出力先に切り替える。
コピー・貼り付けショートカット編
コピー・貼り付けを行うにおいて、GUI(Gnome)環境ではCtrl+C, Ctrl+Vを用いる。
一方でコンソール環境においてはCtrl+CはSIGINTの送出を意味し、Ctrl+Cを上書きしてしまうとSIGINTによるプログラム停止ができなくなるという話がある。
そのためGUIコンソールに対しては、Ctrl+Shift+CとCtrl+Shift+Vがコピー・ペーストのデフォルトショートカットになっているが、その他ウィンドウ(例えばブラウザ)との一貫性がなさすぎて使いにくい。
色々試したところ、ターミナルのオプションでCtrl+C, Ctrl+Vに上書きした場合、Ctrl+Shift+Cを用いればSIGINTが送出できることがわかった。
標準ターミナルだけでなくweztermでも同様の挙動が確認できたので、Ctrl+C, Ctrl+Vに書き換える。
Cudaゴリ押しインストールからのDebian12編
Cudaをインストールしようとすると
ocl-icd-libopencl1などがコンフリクトする的なエラーに
sudo apt remove gnome-shell
sudo apt remove ocl-icd-libopencl1:amd64
sudo apt remove ocl-icd-libopencl1:i386
でコンフリクトを除去する
(ただしgnome-shellは落とすとGUIが機能しなくなるので事前にGUIは落とす方がいい、私はゴリ押してsshからなんとか帳尻合わせをしたが推奨しない。)
インストールに成功している場合は下記のコマンドが通るはず
/usr/local/cuda/bin/nvcc --version
これを参考にしながら、gnome-shellを回復した
sudo apt install gnome-shell
apt dist-upgrade
echo "blacklist nv" | sudo tee -a "/etc/modprobe.d/blacklist.conf"
↑これのdist-upgradeで普通にDebian12に移行してしまった。
あとはインストールしても自動でPATHが通らないので対応する
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
カーネルアップデートからのキーボード・マウス動かない編
キーボードが動かないので色々調べる。
systemctl set-default multi-user.target
でCUI環境にしたところキーボードが動くので、GUI(XWindow)の時の問題だとわかった。
X関係のログが見たいので、以下で調べる。
ls -al /var/log/Xorg* # logrotateされているので最新のログファイルを調べる
less /var/log/Xorg.1.log
エラーが出ていたが、もう一度エラーを出力させるためにGUIに戻す。
systemctl set-default graphical.target
graphical.targetに戻すと何故かキーボードマウスが動くようになった、難儀なものである。
うっかり
sudo apt remove dbus # ibusではない
としたら、回復できず再インストールする羽目に、絶対やってはいけない😂
ansibleで制御する前にやること
1. IPの確認・調整
sshの接続IPがわからないと不便なのでipコマンドやGUIから調べる
DHCPで制御されていることが多いので、必要に応じて固定する
2. sudo権限の設定
sudo権限がないと色々不便なので設定する
su # root権限取得
usermod -G sudo <username>
reboot # 再起動したほうがいい
Dockerのapkとかaptが「ファイルが存在しない」で止まる編
Docker内でのDNS解決がうまく行っていないので、ホスト側のDNSを設定することでうまくいく
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
includeしたいheader(.h)が見つからない編
apt-fileを使うとOK
fstabがおかしい時の解決法
ターミナルでペーストをしたときにコピー内容が"^[[200~"と"~"のような文字列で囲まれることがある。
^[[200~<COPY_CONTENT>~
これは、Bracketed Paste Modeと呼ばれる安全機構で、
set enable-bracketed-paste off
とすると無効化することができる。