インストール - Windowsとデュアルブートする
参考にした記事:2つの別ディスク (HDD) にそれぞれ Windows と Ubuntu をインストールする
WindowsとUbuntuはそれぞれ別のSSDにインストールする。Windowsは既にインストール済。
DVDからインストーラを立ち上げる。インストールの種類では「それ以外」を選ぶ。
パーティションの設定は次の通り。
- swap
- サイズ:メモリの2倍(昔どこかで根拠を読んだけど詳細は忘れてしまった)
- 論理パーティション
- 利用方法:スワップ領域
- メイン
- サイズ:残りを全部
- 基本パーティション
- マウントポイント:
/
ブートローダをインストールするデバイス
には、Ubuntuをインストールするディスクを選ぶ。Windowsがインストールされているディスクを選んでしまうと、Windowsのブートローダを上書きしてしまって面倒なことになる。
ディレクトリ名を英語にする
参考にした記事:Ubuntuでホームディレクトリの中身を英語にする
ターミナルを開き、以下のコマンドを実行する:
$ LANG=C xdg-user-dirs-gtk-update
アップデート
$ sudo apt update
$ sudo apt upgrade
時計がずれる問題
参考にしたサイト:
WindowsとUbuntuとで時計に9時間のずれが生じてします。これは、システム時刻について、WindowsではLocal time(ローカル時)、LinuxではUTC(協定世界時)を使っていることに起因するらしい。したがって、どちらかに統一すればいい。ここではUTCに統一する。
コマンドプロンプトを管理者権限で開き、次のコマンドを実行する:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
docker
インストール
参考にしたサイト:[Get Docker CE for Ubuntu](Get Docker CE for Ubuntu)
書いてあるとおりにコマンドを実行すればよい。ありがたい。
# 依存関係を入れる
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# GPG鍵を入れてからstable版をインストール
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
# 動作確認
$ sudo docker run hello-world
dockerグループの作成
参考にした記事:nvidia-docker でポータブルな機械学習の作業環境を作る
sudoなしでdockerを実行するため。
# もしグループdockerが無ければ、sudo groupadd dockerで作成する
$ sudo usermod -aG docker $USER
再ログインすると設定が反映される。
権限の設定
参考にした記事:Dockerのバージョン1.10で正式に導入されたUser Namespacesを試してみる
そのままだと、root権限のディレクトリをマウントして操作できてしまうらしい。
$ sudo systemctl stop docker.service
# もしユーザdockremapがいなかったら、sudo adduser dockremapで作成する
$ sudo sh -c 'echo dockremap:500000:65536 > /etc/subuid'
$ sudo sh -c 'echo dockremap:500000:65536 > /etc/subgid'
$ sudo vi /etc/docker/daemon.json
{
"userns-remap": "default"
}
$ sudo systemctl start docker.service
nvidia-docker
グラフィックスドライバのインストール
sudo ubuntu-drivers autoinstall
でサクッと入るけど、最新のが好きなので。NVIDIA公式からNVIDIA-Linux-x86_64-430.14.runをダウンロード。デフォルトのドライバnouveauを止めて、ランレベル3でインストールする。これ、もう少し楽にならないものかな。
# nouveauを使わないようにする
$ sudo sh -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
$ sudo sh -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
$ sudo update-initramfs -u
$ sudo reboot
# 最小構成でインストールしたせいで、ここでMakeがないことに気がつく
$ sudo apt install build-essentials
$ sudo telinit 3
$ sudo sh ./NVIDIA-Linux-x86_64-430.14.run
$ sudo telinit 5
# ちゃんとインストールされたことを確認
$ nvidia-smi
nvidia-dockerのインストール
公式GitHubに書いてあるとおりやればいい。さっき書いたdaemon.jsonを上書きされてしまうので注意(diffを見せてくれるのにmergeはしてくれないのか…)。
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
$ sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ 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 update
$ sudo apt install -y nvidia-docker2
# 動作確認
$ sudo systemctl restart docker.service
$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
linuxbrew
Homebew on Linuxを参考に。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
.bashrcにパスの設定をしておく:
export PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH
Emacs
参考にした記事:Ubuntuにemacs26をインストールする
設定ファイルの都合上、26でないと色々と動かない。
sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt install emacs26
Python
pyenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
.bashrcに追記:
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
この辺が無いよと言われるので入れておくといいかもしれない。
$ sudo apt install -y zlib1g-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
適当にどれか入れてみる。
# インストールできるバージョンを一覧
$ pyenv install --list
# 機械学習界隈では3.6の方が無難かな?
$ pyenv install 3.6.8
# 3.6.8を使う
$ pyenv global 3.6.8
# 確認
$ pyenv versions
pipenv
$ brew install pipenv
各プロジェクトのディレクトリ内に仮想環境を作って欲しいので、.bashrcに追記する:
export PIPENV_VENV_IN_PROJECT=1
PyCharm
公式のダウンロードページからCommunity editionをダウンロードしてくる。
$ tar -zxvf pycharm-community-2019.1.2.tar.gz
$ mv pycharm-community-2019.1.2 ~/bin
$ cd ~/bin/pycharm-community-2019.1.2/bin
$ ./pycharm.sh