Debian12 bookworm を入れたときのメモ

# まとめ

+ Debian12 bookwormを入れてみたので、インストールしたあとの設定の手順をまとめた
+ nvidiaドライバーのインストール、システムトレイの追加、sudoの設定、ctrlとcapsの交換、torchの入れ方、rakubrewの入れ方を書いた

# メモ

## システムトレイを追加する

+ ~~GNOME43.x対応のこれを入れた~~
  + https://extensions.gnome.org/extension/615/appindicator-support/
+ (20230716追記) kernel 6.1.0-10 になってからGUI経由だとログインできなくなってしまった(※)。インストール時にgdm3ではなくlightdmをデフォルト設定にするようにした(cinnamonを選択すると選択肢にでてくるはず)。lightdm(cinnamon)にはデフォルトでタスクトレイの機能がはいっている
+ ※ .profileの記述にミスがあるとこういう挙動になるらしいと後日わかった(2024/05/10追記)

## nvidiaのグラフィックドライバーを入れる

+ 参考にしたページ：https://www.if-not-true-then-false.com/2021/debian-ubuntu-linux-mint-nvidia-guide/

### 準備

+ 環境: RTX 3090
+ 事前に520.56.06をダウンロードしてホームに配置しておく
  + https://www.nvidia.com/download/driverResults.aspx/193764/en-us/

### 作業

+ リカバリーモードで必要パッケージを入れる：
```
# dhclient
# apt install linux-headers-$(uname -r) build-essential libglvnd-dev pkg-config
```

+ nouveauをブラックリストに入れる(ここもリカバリーモード)
```
# echo -e "blacklist nouveau\noptions nouveau modeset=0\n" > /etc/modprobe.d/blacklist-nouveau.conf
```

+ update(ここもリカバリーモード)
```
# update-initramfs -u
```

+ 再起動
```
# shutdown -r now
```

+ ドライバーを入れる(ここもリカバリーモード)
```
# bash /home/<ユーザー名>/NVIDIA-Linux-x86_64-520.56.06.run
```

+ nvidia driverのインストール画面に入ったら順にエンター押していけば入る
+ 入れたら再起動

## sudoできるようにする

+ 必ずsuのあとにハイフンが必要:
```
$ su -
# visudo
```

+ rootの下の行にユーザーを追加(e.g., john):
```
root ALL=(ALL:ALL) ALL
john ALL=(ALL:ALL) ALL
```
## capsのキー変更

設定ファイルを開く:
```
# nano /etc/default/keyboard
```
+ XKBOPTIONSを次のように書き換える:
```
XKBOPTIONS=",ctrl:nocaps"
```
設定反映には再起動が必要

## torch(CUDA11.8)とjupyterlabのインストール

+ まず普通にpyenvを入れる
+ pyenvで3.10.12を入れたあとでtorchを入れる
```
$ sudo apt install -y zlib1g-dev libssl-dev libbz2-dev libncurses5-dev libffi-dev libreadline-dev libsqlite3-dev tk-dev liblzma-dev
$ sudo apt install git

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ cd ~/.pyenv && src/configure && make -C src
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
$ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
$ echo 'eval "$(pyenv init -)"' >> ~/.profile
$ exec "$SHELL"

$ pyenv install 3.10.12
$ pyenv global 3.10.12
$ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
$ pip3 install jupyterlab ipywidgets matplotlib
```

## rakubrewのインストール

+ とりえあずpyenvに合わせて`.profile`に入れている
```
$ sudo apt install curl
$ curl https://rakubrew.org/install-on-perl.sh | sh
$ echo 'eval "$(/home/itoyota/.rakubrew/bin/rakubrew init Bash)"' >> ~/.profile
$ source ~/.profile
$ rakubrew download moar 2023.06
$ rakubrew global moar-2023.06
```

## nodejsのインストール

```
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install 18.16.1
```

## emacsのインストール

+ emacsは今の所flatpakよりはaptで入れたほうが使い勝手がいい
```
$ sudo apt install emacs-nox
```

## fstabでディスクを自動マウントする

+ OSを入れてない他のディスクはexfatでフォーマットしておく(exfatならwindowsもlinuxも両方使えるため)
+ ディスクのUUIDを調べるにはデフォルトで入ってる"ディスク"アプリを使うといい
+ emacsでのタブ入力は`ctrl-q tab`でできる
```
# emacs /etc/fstab
```

+ XXXX-XXXXはディスクで調べたものを入れる。uid, gidはマウント後変更できないので、マウント時に指定するようにする(1000とかのすうじｈ`id $(whoami)`で確認できる)
```
UUID=XXXX-XXXX  /mnt/K  exfat   defaults,nofail,uid=1000,gid=1000       0       0
```

+ この状態だとGUIでのアクセスがやりにくいので、ブックマークに入れると楽。手順は：
   + "ファイル (Nemo)"アプリで、「ファイルシステム」-> mntフォルダ選択、フォルダK選択(/mnt/Kの場合)
   + メニューバーでブックマーク -> ブックマークに追加 でOK
+ ドラッグアンドドロップしてもできそうだけど、操作ミスしそう(した)なのでメニューバー経由のほうがいい