主に未来の自分に向けたログだが、誰かの参考になるかもしれないので。
Windowsとのデュアルブート
すでにWindows10とUbuntu 18.04をデュアルブートしている。ストレージ (SSD) は2台あり、それぞれにWidowsとUbuntuを独立してインストールしているつもりだった。なお、Windows 10でUbuntu GRUBブートローダーの削除方法 UEFI/レガシーBIOS | 俺の開発研究所 を参考にBIOSモードを確認したところ、BIOSモードはUEFI(パーティションはGPT)だった。セットアップ前のパーティション構成は次の通り。
- ストレージ1
- Windows10 本体
- EFIパーティション
- Windows10のOSローダー
- Ubuntu 18.04のOSローダー
- ストレージ2
- Ubuntu 18.04 本体
この構成だと、ストレージ1(のEFIパーティション)が無いと、ストレージ2のUbuntuを立ち上げられない。Windows PCに安定したネイティブLinux環境を構築する方法によると、ストレージごとに完全に独立してOSをインストールした方が、OSのアップデートで環境が破壊されるリスクが少ないとのこと。この状態を目指す。
Ubuntuインストール
メディアの作成
WindowsにてUbuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team から日本語 Remix をダウンロード。通常版をダウンロードする案もあったが「オリジナル版からの変更点」に納得してこちらに。Rufus でUSBメモリに書き込む。
インストール
USBメモリから起動。「インストールの種類」では「それ以外」を選択してパーティションを設定する。このとき、**ストレージ2にもEFIパーティションを作成することに注意。**このEFIパーティションを用意しておかないと、「ブートローダをインストールするデバイス」でストレージ2を選んだとしても、ストレージ1のEFIパーティションにOSローダーが書き込まれてしまう。
GRUBブートローダーの削除
Windows 10でUbuntu GRUBブートローダーの削除方法 UEFI/レガシーBIOS | 俺の開発研究所 を参考に、ストレージ1のEFIパーティションからUbuntu 18.04のローダーを削除する。
最終的なパーティションの構成
結果として、以下のような構成になる。
- ストレージ1
- Windows10 本体
- EFIパーティション
- Windows10のOSローダー
- ストレージ2
- Ubuntu 20.04 本体
- EFIパーティション
- Ubuntu 20.04のOSローダー
これにより、ストレージ1からブートすればWindowsが、ストレージ2からブートすればUbuntuが立ち上がる。かつ、片方のOSをアップデートしても、もう片方への影響は小さくなる(はず)。怖いならストレージを抜いてアップデートすればよい。
USBの無線LANアダプタ
Archer T2U Nano というUSBの無線LANアダプタを使っているが、Ubuntuにはドライバーが付属していない。したがって、これを自前でビルドする必要がある。しかしながらビルドしようにもgccやmakeなどがインストールされていない。もちろんインターネットにも繋がらない。さあ困った。
USBメディアからパッケージのインストール
なんと有り難いことに、インストールメディアに入っているのだ。これをマウントしてaptのリポジトリとして見に行けるようにすればいい。
sudo mkdir /media/usb-drive
sudo mount /dev/sdd1 /media/usb-drive/ # 自分のPCでは/dev/sdd1がUSBメディアだった
sudo vi /etc/apt/sources.list
#末尾に以下を追加して保存する
#deb file:/media/usb-drive focal main restricted
sudo apt update
sudo apt install build-essential dkms
sudo umount /media/usb-drive/
sudo rm -r /media/usb-drive
sudo vi /etc/apt/sources.list # 先程追加した行を消すなりコメントアウトするなり
参考
ドライバのビルドとインストール
aircrack-ng/rtl8812au: RTL8812AU/21AU and RTL8814AU driver with monitor mode and frame injection から zip でソースコードをダウンロードし、USBメモリ経由で運ぶ。適当なディレクトリにzipを展開する。
cd rtl8812au-5.6.4.2
sudo make dkms_install # ビルドも兼ねている
再起動すると、WiFiが使えるようになっている。
何はともあれアップデート
sudo apt update && apt upgrade -y && apt autoremove -y
ディレクトリ名を英語にする
LANG=C xdg-user-dirs-gtk-update
参考
Mozcの設定
Ctrl-jで日本語入力をトグルしたい。「ことえり」をベースに以下を追加。
- 直接入力, Ctrl-j: IMEを有効化
- 入力文字なし, Ctrl-j: IMEを無効化
Firefox
Gesturefy
ジェスチャーの設定はjsonでエクスポートできる。バックアップしておいたものを復元する。
uBlock origin
- 豆腐フィルタ (tofukko/filter)
フォント
Dock
sudo apt install gnome-tweak-tool
以下のテーマとアイコンを入れる。
-
jnsh/arc-theme: A flat theme with transparent elements (actively maintained fork)
-
sudo apt install arc-theme
で入る
-
-
PapirusDevelopmentTeam/papirus-icon-theme: Papirus icon theme for Linux
-
sudo add-apt-repository ppa:papirus/papirus
の後でsudo apt install papirus-icon-theme
-
gnome-tweak-tool
を起動し、Keyboard & Mouse → Emacs InputをOn.
GitHub
ssh-keygen -t ed25519 -C "自分のメールアドレス"
ssh-add ~/.ssh/id_ed25519
GitHubのSettings → SSH and GPG keysにて、~/.ssh/id_ed25519.pubの内容を登録する。以下で疎通確認できる。
ssh -T git@github.com
参考
linuxbrew
sudo apt install curl git
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
参考
zshとterminator(ターミナルエミュレータ)
brew install zsh
sudo apt install terminator
設定ファイルの復元
自分のリポジトリから設定ファイル (dotfiles) を復元する。
Emacs
aptから26.3が入る。やや古いけどまあいいか。
sudo apt install emacs
Python
pyenv
pyenv/pyenv: Simple Python version management
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenv install -l | grep 3.9
pyenv install 3.9.9
pyenv global 3.9.9
poetry
curl -sSL https://install.python-poetry.org | python3 -
# インストール後、$HOME/.local/bin をパスに追加しておく
PyCharm
Toolbox App経由で入れる
JetBrains製のIDEをまとめて管理できるToolbox Appが提供されており、このアプリ経由で入れるのが良い。
JetBrains Toolbox App:ツールを簡単に管理からtar.gzをダウンロードする。
sudo tar -xzf ~/Downloads/jetbrains-toolbox-1.22.10970.tar.gz -C /opt
sudo ln -s /opt/jetbrains-toolbox-1.22.10970/jetbrains-toolbox /usr/local/bin
jetbrains-toolbox
GUIが開くので、"PyCharm Professional"をインストールする。Dockには自動的にアイコンが追加される。
Toolbox Appの右上の歯車?アイコンからSettingsを開く。Generate shell scripts
をONにする。Shell scripts location
にパスが通っている適当なディレクトリを入力する(例えば~/.local/bin
)。
さらに、Toolbox内のPyCharmのSettingsを開き(上記はToolbox自体の設定であり、これとは別物であることに注意)、Shell script name
のpycharm
をcharm
に変更する。※MacOSにインストールしたPyCharmとの一貫性を取るため
参考
PyCharm単体で入れる場合
こちらの場合、インストールディレクトリである/opt以下の権限の都合上、アップデートが正常にできないリスクがある(2021.3.1→2021.3.2のアップデートで確認)。
Download PyCharm: Python IDE for Professional Developers by JetBrains からダウンロードする。
sudo tar xzf Downloads/pycharm-professional-2021.3.1.tar.gz -C /opt
/opt/pycharm-2021.3.1/bin/pycharm.sh
- Tools→
- Create command-line Launcher...: コマンドラインから呼べるようにする
- Create Desktop Entry...: Dockに登録できるようにする
CUDA
どうせ nvidia-docker で動かすと思うのだが、念のため生でも動くようにしておく。
バージョンの選定
ソースからのビルド | TensorFlow を参考にする。2022/01/08 では以下の組み合わせが最新だった。
- tensorflow-2.6.0
- GCC 7.3.1
-
gcc -v
によるとgcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
らしいが、気にせず進める
-
- cuDNN: 8.1
- CUDA: 11.2
nouveauの停止
sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
# ファイルの中身は以下のようにする
#blacklist nouveau
#options nouveau modset=0
sudo vi /etc/modprobe.d/blacklist-nvidia-nouveau.conf
# 設定を有効にする
sudo update-initramfs -u
参考
バージョンの固定
うっかりアップグレードされてしまうと困るので、バージョンを固定する。
sudo vi /etc/apt/preferences.d/cuda-11-2-pin-700
Package: cuda
Pin: version 11.2*
Pin-Priority: 700
Package: libcudnn*
Pin: version 8.1*+cuda11.2
Pin-Priority: 700
参考
CUDA Toolkit & cuDNN
Select Target Platformで以下のように設定し、出てきた指示に従ってコマンドを実行する。
- Operating System: Linux
- Architecture: x86_64
- Distribution: Ubuntu
- Version: 20.04
- Installer Type: deb (network)
- 正直どれがいいのか分からない。どうせaptで入れる際にダウンロードするだろうからこれにした
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda libcudnn-8-dev
グラフィックボードのドライバはツールキットに付いてくるので、別途インストールする必要なし。再起動して nvidia-smi
でドライバがインストールされていることを確認する。
動作確認
初心者のための TensorFlow 2.0 入門 | TensorFlow Core のサンプルコードを動かす。
pip install tensorflow==2.6.0
vi tensorflow_sample.py
python tensorflow_sample.py
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
なお、kerasを2.6.0にダウングレードしないと、実行時に AlreadyExistsError
例外が上がってしまう。以下のissueが詳しい。
Docker / nvidia-docker
Installation Guide — NVIDIA Cloud Native Technologies documentation
curl https://get.docker.com | sh \
&& sudo systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
# 動作確認
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
参考
一通り作業した後で見つけた。cuda-drivers
パッケージでインストールする場合は、手動で nouveau をブラックリストに追加する必要がないとのこと。
VSCode
Download Visual Studio Code - Mac, Linux, Windows からdebをダウンロードする。その後aptで入れる。
sudo apt install ~/Downloads/code_1.63.2-1639562499_amd64.deb
Slack
Linux | ダウンロード | Slack からdebファイルをダウンロードする。
sudo apt install ./Downloads/slack-desktop-4.23.0-amd64.deb