新規環境でのセットアップメモ
ホストOSはWindows 10。VirtualBoxでUbuntu16.04
Windows 10
CtrlとAltを置き換える
Macキーボード的配置にする。レジスタ書き換え、又はSharpKeysで書き換える。
どこでもEmacsショートカット
どこでもEmacs同様のカーソル移動、Deleteを使えるようにする。Ctrl-a、Ctrl-d など。実際には、Ctrlキーではなく、Caps Lockキーを使う。Caps Lockキーだと同時押しに対応してないので、先ほどのSharpKeysでCaps LockキーをScroll Lockキーに変えておく。
Keyhacを使って、Scroll Lockと各キー同時押しをカーソル移動などに割り当てる
import sys
import os
import datetime
import pyauto
from keyhac import *
def configure(keymap):
keymap.replaceKey( "ScrollLock", 235 ) # for JP keyboard
#keymap.replaceKey( "RCtrl", 235 ) # for JP keyboard
#keymap.replaceKey( "CapsLock", 235 ) # for US keyboard
keymap.defineModifier( 235, "User0" )
keymap_global = keymap.defineWindowKeymap()
keymap_global[ "U0-P" ] = "Up"
keymap_global[ "U0-N" ] = "Down"
keymap_global[ "U0-B" ] = "Left"
keymap_global[ "U0-F" ] = "Right"
keymap_global[ "U0-A" ] = "Home"
keymap_global[ "U0-E" ] = "End"
keymap_global[ "Shift-U0-P" ] = "S-Up"
keymap_global[ "Shift-U0-N" ] = "S-Down"
keymap_global[ "Shift-U0-B" ] = "S-Left"
keymap_global[ "Shift-U0-F" ] = "S-Right"
keymap_global[ "Shift-U0-A" ] = "S-Home"
keymap_global[ "Shift-U0-E" ] = "S-End"
keymap_global[ "U0-D" ] = "Delete"
keymap_global[ "U0-K" ] = "S-End","Delete"
keymap_global[ "U0-H" ] = "Back"
keymap_global[ "U0-M" ] = "PageDown"
keymap_global[ "U0-O" ] = "PageUp"
#keymap_global[ "U0-RShift" ] = ""
#keymap_global[ "U0-RShift-LShift" ] = "CapsLock"
keymap_global[ "LCtrl-Q" ] = "Alt-F4"
keymap_global[ "LCtrl-W" ] = "Ctrl-F4"
#keymap_global[ "RWin-Enter" ] = "Alt-Enter"
#keymap_global[ "U0-Tab" ] = "CapsLock"
#keymap_global[ "U0-BackSlash" ] = "Insert"
keymap_global[ "U0-Space" ] = "Ctrl-Space"
インストールするソフト
- ブラウザ (FireFox, Chrome)
- プレイヤー (Irfan View, MPC-HC, VLC)
- エディタ (VSCode、Sublime、サクラエディタ)
- バイナリエディタ (Stirling)。右クリックの送るに追加しておく
- その他 (Tera Term、ftp、Git、WinMerge)
Git
[user]
name = iwatake2222
email = xxx@gmail.com
[diff]
tool = WinMerge
[difftool "WinMerge"]
path = C:/Program Files/WinMerge/WinMergeU.exe
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -f \"*.*\" -e -u -r \"$LOCAL\" \"$REMOTE\"
[merge]
tool = WinMerge
[mergetool "WinMerge"]
path = C:/Program Files/WinMerge/WinMergeU.exe
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -u \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[alias]
windiff = difftool -y -d -t WinMerge
winmerge = mergetool -y -t WinMerge
[core]
autocrlf = true
Windows11
- 設定 → 個人用設定 → タスクバー → タスクバーの動作 → タスクバーの配置 → 左揃え
- エクスプローラ → 表示 → コンパクトビュー
- タスクバーのサイズ (regedit)
- コンピューター\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
- 「新規」から「DWORD(32ビット)値」
- TaskbarSi
- 0
- スタートメニューを戻す (効果なし)
- コンピューター\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
- 「新規」から「DWORD(32ビット)値」
- Start_ShowClassicMode
- 1
- エクスプローラのツールバーを戻す
- reg.exe add "HKCU\Software\Classes\CLSID{d93ed569-3b3e-4bff-8355-3c44f6a52bb5}\InprocServer32" /f /ve
- 右クリックを戻す
- reg add "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
Ubuntu
その他
sudo sed -i 's/# set linenumbers/set linenumbers/g' /etc/nanorc
gsettings set org.gnome.desktop.background picture-uri 'none'
gsettings set org.gnome.desktop.background primary-color '#2255AA'
-
SettingsのUsersでUnlockをクリックできない
- sudo gnome-control-cente
-
タイトルバーの高さのサイズを小さくする
headerbar entry,
headerbar spinbutton,
headerbar button,
headerbar separator {
margin-top: 0px; /* same as headerbar side padding for nicer proportions */
margin-bottom: 0px;
}
headerbar {
min-height: 24px;
padding-left: 2px; /* same as childrens vertical margins for nicer proportions */
padding-right: 2px;
margin: 0px; /* same as headerbar side padding for nicer proportions */
padding: 0px;
}
スワップ領域を追加する
sudo fallocate -l 64G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
free -h
永続化
echo "/swapfile2 swap swap defaults 0 0" | sudo tee -a /etc/fstab
rmコマンドでうっかりファイル/フォルダを削除してもゴミ箱から復旧できるようにする
sudo apt install trash-cli
if type trash-put &> /dev/null
then
alias rm=trash-put
fi
入力関係 (日本語、Emacsショートカット)
sudo apt install -y ibus-mozc gnome-tweaks mozc-utils-gui dconf-editor
ibus restart
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'jp'), ('ibus', 'mozc-jp')]"
dconf-editor
# /org/gnome/settings-daemon/plugins/keyboard/active = 0
sudo apt-get install autokey-gtk
mkdir -p ~/.xkb/keymap ~/.xkb/symbols
setxkbmap -print > ~/.xkb/keymap/mykbd
setxkbmap -print > ~/.xkb/keymap/mykbd_remote
setxkbmap -print > ~/.xkb/keymap/mykbd_default
code .xkb/ &
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
nano ~/bin/load_xkbmap.sh
chmod +x ~/bin/load_xkbmap.sh
nano ~/bin/load_xkbmap_default.sh
chmod +x ~/bin/load_xkbmap_default.sh
.xkb/
├── keymap
│ └── mykbd
└── symbols
└── myswap
partial modifier_keys
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+jp+us:2+inet(evdev)+myswap(swapkeys)"
// key <MUHE> { [Control_L, Control_L] };
};
xkb_geometry { include "pc(pc105)" };
};
partial modifier_keys
xkb_symbols "swapkeys" {
replace key <MUHE> { [ Control_L ] };
// replace key <LALT> { [ Control_L ] };
replace key <LCTL> { [ Alt_L ] };
// modifier_map Mod1 { <LCTL> };
// modifier_map Control { <LALT> };
replace key <CAPS> { [ Meta_L] };
};
partial modifier_keys
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+jp+us:2+inet(evdev)+myswap_remote(swapkeys)"
// key <MUHE> { [Control_L, Control_L] };
};
xkb_geometry { include "pc(pc105)" };
};
partial modifier_keys
xkb_symbols "swapkeys" {
replace key <MUHE> { [ Control_L ] };
// replace key <LALT> { [ Control_L ] };
replace key <LCTL> { [ Alt_L ] };
// modifier_map Mod1 { <LCTL> };
// modifier_map Control { <LALT> };
// replace key <CAPS> { [ Meta_L] };
};
#!/bin/sh
if [ -s $HOME/.xkb/keymap/mykbd ]
then
sleep 1
xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY 2>/dev/null
fi
#!/bin/sh
if [ -s $HOME/.xkb/keymap/mykbd_default ]
then
sleep 1
xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/mykbd_default $DISPLAY 2>/dev/null
fi
#!/bin/sh
if [ -s $HOME/.xkb/keymap/mykbd_remote ]
then
sleep 1
xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/mykbd_remote $DISPLAY 2>/dev/null
fi
-
Emacsショートカットの設定
- Autokeyを開く
- 既存の設定を消す
- New -> Folder
- ~/Settings/Autokey
- ~/Settings/Autokey の中に下記を解凍する
-
自動設定
- gnome-session-properties
autokey
load_xkbmap.sh
- ログオフしたときは再度
load_xkbmap.sh
を実行する必要がある - リモートデスクトップの時は、キーバインド変更が競合しないように、
load_xkbmap_default.sh
を実行する
- gnome-session-properties
-
その他
- mozc -> settings -> keyboard shortcutで、Eisuのショートカットを全て削除
- Chrome Remote Desktopで接続するとき
- Remote: そのまま
- Host: Autokeyはそのまま。
replace key <CAPS> { [ Meta_L] };
だけ削除した設定を用意しておき、それを使う
-
Ubuntu -> UbuntuにChrome Remote Desktopで接続するとき
- remote先では
load_xkbmap_remote.sh
を使う - Mozcのキーボード設定から、Eisuのショートカットを全て削除する
xmodmap -e "remove lock = Eisu_toggle"
- remote先では
Chrome Remote Desktop
- インストール
wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo dpkg -i chrome-remote-desktop_current_amd64.deb
sudo apt install -f -y
sudo groupadd chrome-remote-desktop
sudo usermod -a -G chrome-remote-desktop $USER
touch ~/.chrome-remote-desktop-session
mkdir .config/chrome-remote-desktop
- 設定修正
- https://qiita.com/ninose14/items/473369d76814174dd58f
- displayは$DISPLAYで確認した値を使うべきだが、リモートデスクトップインストール後はずれる可能性があるので0にしておくのが無難。うまく行かなかったら1にする
/opt/google/chrome-remote-desktop/chrome-remote-desktop --stop
sudo nano /opt/google/chrome-remote-desktop/chrome-remote-desktop
FIRST_X_DISPLAY_NUMBER = 0
def get_unused_display_number():
"""Return a candidate display number for which there is currently no
X Server lock file"""
display = FIRST_X_DISPLAY_NUMBER
# while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
# display += 1
return display
def launch_session(self, server_args, backoff_time):
"""Launches process required for session and records the backoff time
for inhibitors so that process restarts are not attempted again until
that time has passed."""
logging.info("Setting up and launching session")
self._init_child_env() # コメントアウトした方がよいかも
self.setup_audio() # コメントアウトした方がよいかも
self._setup_gnubby()
# self._launch_server(server_args)
display = self.get_unused_display_number()
self.child_env["DISPLAY"] = ":%d" % display
if not self._launch_pre_session():
# If there was no pre-session script, launch the session immediately.
self.launch_desktop_session()
self.server_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
backoff_time)
self.session_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
backoff_time)
sudo nano /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.debian.apt.*;io.snapcraft.*;org.freedesktop.packagekit.*;com.ubuntu.update-notifier.*
ResultAny=no
ResultInactive=no
ResultActive=yes
- カーテンモード
- リモート操作中にHOST PC側のディスプレイを表示しない機能
- Ubuntuだと未対応?
- ディスプレイの電源を切る。または、ダミープラグを使う
- 機種依存があるかもしれないが、DisplayPortだとディスプレイの電源を切ったら操作不可能になった。HDMIならディスプレイの電源を切っても操作可能だった
Ubuntu (VirtualBox)
VirbualBoxの設定
ICH9、I/O APIを有効化、PAE/NXを有効化、準仮想化インターフェース=Hyper-V、VT-X/AMD-Vを有効化、ネステッドページングを有効化、ビデオメモリ=256MB(ディスプレイ数を8にしてから1に戻す)、3Dアクセラレーションを有効化、コントローラSATAでタイプ=AHCI、ホストのI/Oキャッシュを使う
(ホストOSがWindowsの場合はHyper-V、Linux系の場合はKVMが良いみたい)
インストール後
- ソフトウェアを最新にする (念のため、この順番が良い)
- Ubuntu Softwareから全部Updateしておく (固まるかもしれないので、topで処理状況を確認する)
sudo apt-get update
sudo apt-get upgrade
- Guest Additions CDのインストール
Windowsとの共有フォルダのマウント
- VBoxのメニューバー -> デバイス -> 共有フォルダ- -> 共有フォルダ-設定 で共有フォルダ設定する (例.
win_share
。自動マウント、永続化する) - マウントポイントをubuntu上で作る (例. ユーザ名 = tak)
mkdir /home/tak/Desktop/win_share
- マウントする
sudo mount.vboxsf win_share /home/tak/Desktop/win_share
#!/bin/sh
sudo mount.vboxsf win_share /home/tak/Desktop/win_share
Windowsのデスクトップフォルダ全体を共有すると、Read Onlyになってしまう。
- 追記(2020/02/12)
- 以下の方が便利。
sudo adduser iwatake vboxsf
- VirtualBoxの共有フォルダの設定に、マウントポイント =
/home/iwatake/Desktop/devel
などとし、「永続化する」にチェックを付ける。
- 以下の方が便利。
ターミナルのプロンプト変更
ユーザ名やマシン名を消して、カレントディレクトリのみ表示にする。code ~/.bashrc
if [ "$color_prompt" = yes ]; then
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\w\[\033[00m\]\$ '
else
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}\w\$ '
fi
ターミナルの言語設定
code ~/.bashrc
で、最後の方に以下を追加。場合によっては、export LANG=C
の方がいいかも。
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
どこでもEmacsショートカット
どこでもEmacs同様のカーソル移動、Deleteを使えるようにする。Ctrl-a、Ctrl-d など。実際には、Ctrlキーではなく、Caps Lockキーを使う。(先ほどの設定でホストOSであるWindows上でCaps LockキーをScroll Lockにしているので、実際には、Scroll Lock-a、Scrol Lock-dになる。)
Scroll LockキーをMeta_Lキーに変更する。
省略
// modifier_map Mod1 { <META> };
modifier_map Mod2 { <META> };
省略
//key <SCLK> { [ Scroll_Lock ] };
key <SCLK> { [ Meta_L ] };
省略
Meta_Lキーを押したときに、メニューバーを選択しない (ALT的な動作をさせない)
// Meta is mapped to second level of Alt keys.
partial modifier_keys
xkb_symbols "meta_alt" {
//key <LALT> { [ Alt_L, Meta_L ] };
key <LALT> { [ Alt_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
//symbols[Group1] = [ Alt_R, Meta_R ] };
symbols[Group1] = [ Alt_R ] };
// modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
modifier_map Mod1 { Alt_L };
// modifier_map Mod4 {};
};
Autokeyを使って、ショートカットキーを登録する。例えば、Meta-f
というホットキーに、keyboard.send_key("<right>")
を割り当てる。AutoKeyを開いて、New->Folderで、mysettings/Autokeyを開く。その中に、設定済みファイル (https://github.com/take-iwiw/Autokey/archive/master.zip) をコピーする。
Start Applications (gnome-session-properties)に登録する
その他
shファイルを実行/編集選べるようにする
Files -> メニューバー -> Edit -> Preferences -> Behavior -> Executable Text Files -> Ask each time
Filesでアドレスバー表示にする
Ctrl-Lで切り替える。または、
gsettings set org.gnome.nautilus.preferences always-use-location-entry true
インストールするソフト
- Visual Studio Code (MSのサイトから.debでダウンロード)
- Autokey (Ubuntu Softwareから)
VSCodeをsudoで開く
sudo code --user-data-dir="." ファイル名
OpenCV(x86_64 linux)
apt update && apt upgrade -y
apt install -y build-essential cmake nano zip wget curl git
apt install -y python3-dev python3-pip
apt install -y ffmpeg libavutil-dev libavcodec-dev libavformat-dev libavresample-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev libdc1394-22-dev
apt install -y libatlas-base-dev libopenblas-dev liblapack-dev libtbb-dev libeigen3-dev
apt install -y libgtk-3-dev
wget https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
unzip 4.5.3.zip
cd opencv-4.5.3/
mkdir build && cd build
cmake .. -DWITH_TBB=ON -DWITH_FFMPEG=ON
make -j4
make install
ldconfig
Python
pyenv + venv
Windows
-
https://github.com/pyenv-win/pyenv-win/archive/master.zip をダウンロードして、
C:\iwatake\devel\python\.pyenv
に解凍 - 下記コマンドでパスを設定
[System.Environment]::SetEnvironmentVariable('PYENV',"C:\iwatake\devel\python\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',"C:\iwatake\devel\python\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', "C:\iwatake\devel\python\.pyenv\pyenv-win\bin;" + "C:\iwatake\devel\python\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
- 下記コマンドでpythonをインストールしたり、新規環境を作る
pyenv install 3.8.9
pyenv shell 3.8.9
python -m venv C:\iwatake\devel\python\.venv\py38_test01
C:\iwatake\devel\python\.venv\py38_test01\Scripts\Activate.ps1
python -m pip install --upgrade pip
- シェルを実行できない場合は、必要に応じて管理者権限からPowerShellを起動して、
Set-ExecutionPolicy Remotesigned
- それでもできない場合は、pyenv.ps1を右クリック→プロパティ→セキュリティの項目の「許可する」をチェック
Linux
- 下記コマンドでインストール
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
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
- シェル再起動
- 下記コマンドでpythonをインストールしたり、新規環境を作る
pyenv install 3.8.9
pyenv shell 3.8.9
python -m venv ~/.venv/py38_test01
source ~/.venv/py38_test01/bin/activate
python -m pip install --upgrade pip
WSL2 (Ubuntu)
基本的には、 https://docs.microsoft.com/ja-jp/windows/wsl/ の通り
WSLのインストール
- WSLを有効にする、仮想マシンの機能を有効にする
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 再起動
- Linux カーネル更新プログラムを実行する
- WSL 2 を既定のバージョンとして設定する
wsl --set-default-version 2
- Microsoft Storeから、Ubuntuをインストールする
- 起動して、IDとパスワードを設定する
設定
デフォルトのイメージの場所
C:\Users\iwatake\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
ホームディレクトリをWindows側に変更する (遅くなるらしいのでやらないほうが良い)
- sudo nano /etc/passwd
pi:x:1000:1000:,,,:/home/pi:/bin/bash
- ↑の
/home/pi
を変更
- Windows Terminalの場合
- Window Terminalで設定を開く
- プロファイル -> Ubuntu-xx.xx -> ディレクトリの開始、を変更する
WSL側のファイルにアクセスする
\wsl$\Ubuntu-20.04\home\pi
バックアップ
wsl --export Ubuntu-20.04 C:\iwatake\devel\wsl_backup\ubuntu-20.04_20210710_clean.tar
イメージの削除
wsl --unregister Ubuntu-20.04
復元とデフォルトユーザ名変更
wsl --import Ubuntu-20.04 C:\iwatake\devel\wsl_image\Ubuntu-20.04 C:\iwatake\devel\wsl_backup\ubuntu-20.04_20210710_clean.tar --version 2
ubuntu2004.exe config --default-user pi
GUI表示
- Windows
- VcXsrvをインストール
- 初回起動時の設定で、
Disable access control
にチェックをつける
- 初回起動時の設定で、
- VcXsrvをインストール
- Ubuntu
-
export DISPLAY=192.168.1.2:0.0
または、 (IP省略は不可) export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
- ↑を
.bashrc
に書いておく
-
VSCodeから編集する
- Windows
- VSCodeと
ms-vscode-remote.vscode-remote-extensionpack
をインストール - VSCodeインストール時にパスを追加しておく
- VSCodeと
- Ubuntu
sudo apt install -y wget ca-certificates
- ターミナルから
code .
で起動
Docker
インストール
- Docker Desktop for Windowsをインストール
- https://docs.docker.com/docker-for-windows/wsl/#download
- Setting -> General ->
Use the WSL 2 based engine
にチェックがついていることを確認する - Setting -> Resources -> WSL INTEGRATIONで、Ubuntu-20.04を有効にする
-
docker run hello-world
で動作確認
- VSCodeに
ms-azuretools.vscode-docker
をインストール
PowerShellのコマンド補完
Install-Module -Scope CurrentUser posh-docker
notepad $PROFILE
以下を追記
Import-Module posh-docker
Containerを作る (開発用。Windowsとの共有フォルダとX Display forwarding)
docker pull ubuntu:20.04
docker run -v /C/iwatake/devel:/devel -e DISPLAY="192.168.1.2:0" -itd --name="ubuntu_01" ubuntu:20.04
docker start ubuntu_01
docker exec -it ubuntu_01 bash
Imageを作る
docker commit --pause ubuntu_01 ubuntu:work_cv
WSL2 + GPU + Docker on Windows 11
Install
WSLのインストール
wsl --install -d Ubuntu-20.04
いろいろ
- イメージ置き場
C:\Users\iwatake\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
- WindowsからWSLファイルへのアクセス
\\wsl.localhost\Ubuntu-20.04
- WSLからWindowsファイルへのアクセス
/mnt/c/
- WSLのGUIアプリを実行する場合、Windows側にX表示用アプリ (VcXsrvなど) は不要。だけど、Docker上のGUIアプリを実行する場合は必要っぽい
VSCodeのインストール
- ms-vscode-remote.vscode-remote-extensionpack をインストールしておく
sudo apt update && sudo apt upgrade
sudo apt install wget ca-certificates
code .
NVIDIA CUDA in WSL のインストール
-
参考
-
NVIDIA Drivers for CUDA on WSLをインストール
-
メモ
- インストール後
nvcc -V
をしてもCommand 'nvcc' not found, but can be installed with
となってしまう - 以下を.bashrcに追加
export CUDA_HOME=/usr/local/cuda export PATH=${CUDA_HOME}/bin:${PATH} export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
- インストール後
NVIDIA Container Toolkit のインストール
- 参考
curl https://get.docker.com | sh
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
curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo usermod -aG docker $USER
sudo service docker restart
sudo service docker start # デーモンの登録はできないらしいので、毎回startが必要
- メモ
- docker runすると、
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
エラーが出るsudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
- docker runすると、
試す
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
docker run --gpus all -it --rm -v /mnt/c/iwatake/devel/:/devel -e DISPLAY="192.168.1.2:0" nvcr.io/nvidia/tensorrt:21.11-py3
docker run --gpus all -it --rm -v /mnt/c/iwatake/devel/:/devel -e DISPLAY="192.168.1.2:0" nvcr.io/nvidia/cuda:11.4.2-devel-ubuntu20.04
docker run --gpus all -it --rm -e DISPLAY=$DISPLAY nvcr.io/nvidia/cuda:11.7.1-devel-ubuntu22.04